2014-10-29 89 views
0

我需要从不同列收集Sch代码到一列中,如下所示。使用公式将两列或更多列数据合并到一列中

如果可能,第一优先级是通过公式或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

一种解决方案:

复制并粘贴A列数据下方列C中的所有值。突出显示列A并转到数据>删除重复项,然后选择数据>排序。

0

您可以从列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引用另一列。

enter image description here

要从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 +输入,不仅仅是输入。一旦输入正确,它可以被填充以捕获所有可能的值。我会填满你的行数至少三倍,以便这些空白在晚些时候填补空缺。从理论上讲,你可以将这个过程叠加得更深一些,但出于实际的目的,我不会比这更深入。数组公式会以对数速率消耗计算资源,因此数据大小将成为这是否是合适解决方案的关键因素。

+0

非常感谢,其工作非常正确,因为我需要....但大多数人不知道如何处理这么长的公式......是否有可能使用户定义函数,我们只需选择具有该功能的列和我们的结果将会出现。 – 2014-10-30 10:31:19

+0

@ShahbazNawaz - 如果“人们”不知道如何处理配方,那么他们应该放下懒惰的背后,学习如何来到公共的帮助论坛,并要求某人为他们工作。要回答你的问题,是的,这是可能的。 – Jeeped 2014-10-30 13:14:07

+0

谢谢先生......它非常有帮助...... – 2014-10-30 14:23:04

相关问题