首页 > 解决方案 > 如何让 Excel 根据不同列中的值动态生成列?

问题描述

在 Excel 2016 中,我有一个“品牌”列,它的每一行都包含一个字符串。可能的字符串值的集合是有限的,它们可能会出现不止一次。

另一列“模型”中有相关数据。每个模型值总是不同的。

如何让 Excel 为每个现有品牌生成一个列,并以自动方式用相应的模型填充它?

我的问题是我不能手动进行,因为对于每次分析,品牌的数量都是不同的,而且我事先并不知道。

这将是输入:

在此处输入图像描述

这是预期的输出:

在此处输入图像描述

有任何想法吗?

先感谢您!

标签: excelcalculated-columnsexcel-2016

解决方案


尝试使用数组公式。首先,将不同的品牌价值放在第 1 行,从 D 列开始。如果需要,可以使用 C 列,但我喜欢在数据和所需结果之间留一个空列。

D1 = 苹果,E1 = 诺基亚,F1 = 三星,G1 = 小米

然后,在单元格 D2 中的 Apple 正下方,粘贴以下公式:

=IFERROR(INDEX($B$2:$B$9999, SMALL(IF(D$1=$A$2:$A$9999, ROW($A$2:$A$9999)-ROW($A$2)+1), ROW (1:1))),"")

如果您有超过 9999 行,则在公式中根据需要进行调整。

光标仍在公式中,同时按 CTRL-SHIFT-ENTER 使其成为一个数组。

将公式复制到单元格 E2、F2 和 G2。如果事情看起来不对,您可能需要再次为其中的每一个重复数组技巧(CTRL-SHIFT-ENTER)。因此,您的 Excel 将如下所示:

在此处输入图像描述

现在,根据需要将公式向下拖动。如果没有找到更多模型,公式的 iferror 部分将确保单元格看起来很干净。

在此处输入图像描述

- - -在最近的评论后编辑- - -

我无法确定如何自动从 A 列中选择不同的值并将它们自动转换为一行。将它保存在列中很容易,但是转置为行很麻烦。

无论如何,这是丑陋的更新。单元格 D1 将简单地说明“品牌”。在单元格 D2 中,将其设为数组公式 (CTRL-SHIFT-ENTER)。

=IFERROR(INDEX($A$2:$A$9, MATCH(0, COUNTIF($D$1:D1, $A$2:$A$9), 0)), "")

因此,第 2 行将是您的品牌。拖动公式,重复数组技巧。

现在,在单元格 E1 中,键入公式 =D2。拖过去。

放置原始答案中的公式建议,从第 3 行开始。最终结果如下所示。它现在应该是“自动化的”,但它并不吸引人。小的编辑会有所帮助(例如,使第 1 行几乎不可见)。

在此处输入图像描述


推荐阅读