我需要将不同列中的Sch Code收集到一列中,如下所示。
如果可能,首要的是通过公式或UDF函数。
我的数据:
Column A Column B Column C Column D Column E Column F Column G
SCH Code Value SCH Code Value Rating SCH Code Value
C01-3-1 4 C01-4-1 8 300 C02-3-1 8
300 C02-3-5 9
C01-3-2 5 C01-4-2 12 300 C02-3-2 12
C01-3-3 6 C01-4-3 21 300 C02-3-3 21
300 C02-3-6 10
C01-3-4 7 C01-4-4 4 300 C02-3-4 4
必填结果(摘要表中只需要Sch代码,但公式或VBA UDF函数需要它):
Column A
C01-3-1
C01-3-2
C01-3-3
C01-3-4
C01-4-1
C01-4-2
C01-4-3
C01-4-4
C02-3-1
C02-3-5
C02-3-2
C02-3-3
C02-3-6
C02-3-4
答案 0 :(得分:1)
您可以使用数组公式从A列收集唯一的非空白值,例如=INDEX($A$2:$A$99,MATCH(0, IF(LEN($A$2:$A$99),COUNTIF(I$1:I1,$A$2:$A$99),1),0))
。由于这会返回#N/A
,其中没有更多值可从其列返回,因此您可以将控制权转移到引用具有IFERROR
的其他列的类似公式。
要从三列SCH代码中进行选择,您需要将此深度叠加3。 I2中的公式是:
=IF(LEN(I1),IFERROR(INDEX($A$2:$A$99,MATCH(0, IF(LEN($A$2:$A$99),COUNTIF(I$1:I1,$A$2:$A$99),1),0)),IFERROR(INDEX($C$2:$C$99,MATCH(0, IF(LEN($C$2:$C$99),COUNTIF(I$1:I1,$C$2:$C$99),1),0)),IFERROR(INDEX($F$2:$F$99,MATCH(0, IF(LEN($F$2:$F$99),COUNTIF(I$1:I1,$F$2:$F$99),1),0)),""))),"")
此数组公式需要 Ctrl + Shift + Enter ,而不仅仅是 Enter 。一旦输入正确,可以填充它以捕获所有可能的值。我会填充至少三倍于你的行,以便如果空白在以后填写它们就会占有一席之地。
从理论上讲,你可以把它叠得更深,但是出于实际目的,我不会比这更深入。数组公式以对数速率消耗计算资源,因此数据大小将成为决定这是否是合适解决方案的关键因素。
答案 1 :(得分:0)
一个解决方案:
复制并粘贴A列数据下方C列中的所有值。突出显示列A并转到数据>删除重复项,然后选择数据>排序。