2014-10-29 37 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