2013-07-24 39 views
0

我有一行由兩列組成,該行的每個單元格可能包含多個單詞。對於同一行的每個單元格中的每個單詞組合,我必須獲得一個新行。我舉一個簡單的例子:在不同行上列出兩組單詞的組合

Column1  Column2  
W1   W2   
W3   W4   
W5       

從這個ROW1,我們必須獲得3 * 2 = 6個新這樣做行:

 
W1   W2 -->NEWROW1 
W1   W4 -->NEWROW2 
W3   W2 -->NEWROW3 
W3   W4 -->NEWROW4 
W5   W2 -->NEWROW5 
W5   W4 -->NEWROW6

什麼是簡單的宏來獲得呢?

+0

你有沒有更多的專欄可以合併,還是總是2? –

回答

0

有可能是一個更優雅的方式,但嘗試這樣的事情:

Sub mySub() 

Dim iRow as Long 
Dim iRow2 as Long 
Dim iOutput as long 

For iRow = 1 to Cells(1,1).End(xlDown).Row 
For iRow2 = 1 to cells(1,2).End(xlDown).Row 
iOutput = iOutput + 1 
Cells(iOutput,3) = Cells(iRow,1) 
Cells(iOutput,4) = Cells(iRow2,2) 
Next iRow2 
Next iRow 

End Sub 
+0

我在這裏的第一個答案。評論歡迎。你如何正確縮進代碼? –

+0

我通常在縮進行的開頭添加四個空格...至於你的答案,它將包括列的標題行,所以你可能想在2開始你的'iRow'和'iRow2',而不是1 – Jaycal

+0

我(現在!)認爲我們都誤解了這個問題 - 但由於OP在18個月內沒有回答問題+所以沒有必要進一步詢問,所以我已經重新回答了這個問題以適應我們的答案。 – pnuts

0

假設W1是在A1和每對詞的結果是在兩個單元,這可以在不VBA實現如在ROW1式:

=INDIRECT("A"&1+INT((ROW()-1)/2)) 

=INDIRECT("B"&1+MOD(ROW()-1,2)) 

都複製下來以適應。