2013-07-24 40 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)) 

都复制下来以适应。