我有以下数据结构:
正如您在J 列中看到的那样,我正在尝试将A列和C列和E列中的数据合并到一列中> & G。
我正在使用这个公式:
=IF(ROW()<=COUNTA($A:$A);INDEX($A:$C;ROW();COLUMN(A1));INDEX($A:$C;ROW()-COUNTA($A:$A)+1;COLUMN(C1)))
我得到了K列中的值,如您所见。目前该公式仅合并两列。 如何修改它以合并所有四列?
如何只获取从第 5 行开始的值?
列高会不断变化:有时 A 列中有 10 个值,有时有 2 个值。
任何 Excel 公式或任何 VBA 代码都可以接受。
最佳答案
有一个相当标准的方法可以从列中检索唯一值,但不能从多个列中检索唯一值。要实现从多列检索,您需要将多个公式堆叠在一起,并将处理传递到后续列(其中较早的公式出错)。
J5 中的数组公式1 为,
=IFERROR(INDEX($A$5:$A$99, MATCH(0, IF(LEN($A$5:$A$99), COUNTIF(J$4:J4, $A$5:$A$99), 1), 0)),
IFERROR(INDEX($C$5:$C$99, MATCH(0, IF(LEN($C$5:$C$99), COUNTIF(J$4:J4, $C$5:$C$99), 1), 0)),
IFERROR(INDEX($E$5:$E$99, MATCH(0, IF(LEN($E$5:$E$99), COUNTIF(J$4:J4, $E$5:$E$99), 1), 0)),
IFERROR(INDEX($G$5:$G$99, MATCH(0, IF(LEN($G$5:$G$99), COUNTIF(J$4:J4, $G$5:$G$99), 1), 0)),
""))))
我只包含 A、C、E 和 G 列,因为您的示例数据仅显示 B、D、F 和 H 列中的重复项。
<小时/>1 数组公式需要使用 Ctrl+Shift+Enter↵ 来完成。如果输入正确,Excel 会将公式括在大括号中(例如 { 和 })。您不必自己输入大括号。一旦正确输入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试将整列引用减少到更接近地代表实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将引用范围缩小到最小值。请参阅Guidelines and examples of array formulas了解更多信息。
关于vba - 将多列中的值合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30329189/