2015-03-31 169 views
0

enter image description here匹配並移動Excel中的列

嗨;

我有一張有4列的表;

列A和C具有產品號

列B和d是爲產品的細節。

我想要做的是;如果列A中的數字與列C中的數字相匹配,那麼我想將B的值(產品詳細信息)列入E列,但是如果該數字在第二行重複,然後再與C列中的數字匹配,那麼我想要將這個新值賦予F列。

這對我們來說確實是一個特別的問題。我們正試圖爲我們的新網頁創建一個新的sql數據庫,並且我們必須像這樣轉換所有數據。

我在Excel中用= vlookup公式試過了,但它沒有工作。我認爲這個問題只能用宏解決。 (如果我沒有錯......)

PS_請檢查圖像,這很難用母語解釋。

感謝

+0

對於你來說最好的解決方案將取決於你必須聚合和轉置多少行數據。 – Jeeped 2015-03-31 03:52:15

回答

1

如果您有少於2000-3000行的數據,這可以通過一些數組公式來完成。如果你不止這些,VBA解決方案將更適合。這些數組公式會隨着它們所涉及的範圍變大而呈指數增長。在某些時候,它根本不值得等待,VBA解決方案會更好。

Array formulas to aggregate and transpose

陣列式F2是,

=IF(LEN(F1), IFERROR(INDEX(A$1:A$999, MATCH(0, IF(LEN(A$1:A$999), COUNTIF(F$1:F1, A$1:A$999&""), 1), 0)), IFERROR(INDEX(C$1:C$999, MATCH(0, IF(LEN(C$1:C$999), COUNTIF(F$1:F1, C$1:C$999&""), 1), 0)), "")), "") 

注意,這需要 F1的報頭列標籤。它不能被放入F1。陣列公式需要用來完成。Ctrl + Shift + Enter↵。一旦輸入正確,填寫撿起從列A的所有零件編號和C.

數組公式在G2是一個獨特的名單,

=IF(LEN($F2), IFERROR(INDEX($B$1:$B$999, MATCH(0, IF($A$1:$A$999=$F2, COUNTIF($F2:F2, $B$1:$B$999&""), 1), 0)), IFERROR(INDEX($D$1:$D$999, MATCH(0, IF($C$1:$C$999=$F2, COUNTIF($F2:F2, $D$1:$D$999&""), 1), 0)), "")), "") 

這也需要與Ctrl鍵敲定 + Shift + Enter↵。一旦輸入正確,填寫正確的幾列,然後填寫所有公式,以匹配F列中檢索的條目。

我已經將這些公式包含在999行中。如果您的需求超出此範圍,您可能需要向上調整。搜索$ 999並替換爲$ 1999可以快速完成此操作。

這就是它的全部。確保在底部留下幾行,以防出現同樣的原因,另一個文件有更多行和幾列。

+0

謝謝你的回答!它按我希望的方式工作。我有5500排,我花了一點時間,但它的工作沒有任何問題。我的配方很原始,再次感謝你。 – LikePod 2015-03-31 14:46:12

+0

@Aura - 很高興聽到您的解決方案。這聽起來像我的排限制有點保守,但至少在同一個球場。感謝您的反饋意見! – Jeeped 2015-03-31 19:26:29

1

如果順序不是關鍵的,使用公式可能的替代僅將所述第二兩列追加到前兩個(在複印件),添加一個空白ROW1和ColumnC:

=IF(COLUMN()<=COUNTIF($A:$A,$A2)+2,INDIRECT("$B"&(COLUMN()-3+ROW())),"") 

複製到另一列,並在另一列:

=A1=A2 

複製到適合。隱藏ColumnB並過濾另一列以選擇FALSE。選擇Row2結束並將特殊值,值粘貼到原始工作表的F1中。