Vba 在不同的行上列出两组单词的组合

Vba 在不同的行上列出两组单词的组合,vba,excel,rows,excel-indirect,Vba,Excel,Rows,Excel Indirect,我有一个由两列组成的行,该行的每个单元格可能包含多个单词。对于同一行的每个单元格中的每个单词组合,我必须获得一个新行。我举一个简单的例子: Column1 Column2 W1 W2 W3 W4 W5 从第1行中,我们必须获得3*2=6行,以这种方式生成: W1 W2 -->NEWROW1 W1

我有一个由两列组成的行,该行的每个单元格可能包含多个单词。对于同一行的每个单元格中的每个单词组合,我必须获得一个新行。我举一个简单的例子:

Column1       Column2    
W1            W2          
W3            W4          
W5                        
从第1行中,我们必须获得3*2=6行,以这种方式生成:

W1 W2 -->NEWROW1 W1 W4 -->NEWROW2 W3 W2 -->NEWROW3 W3 W4 -->NEWROW4 W5 W2 -->NEWROW5 W5 W4 -->NEWROW6 W1 W2-->新行1 W1 W4-->新行2 W3 W2-->新行3 W3 W4-->新行4 W5 W2-->新行5 W5 W4-->新行6
什么是一个简单的宏来实现这一点?

可能有一种更优雅的方法,但请尝试以下方法:

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

假设
W1
在A1中,并且每对单词的结果在两个单元格中,这可以在没有VBA的情况下实现,例如第1行中的公式:

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


两人都抄了下来。我的第一个答案就在这里。欢迎评论。如何正确缩进代码?我通常在行的开头多加四个空格进行缩进…至于你的答案,它将包括列的标题行,因此你可能希望将
iRow
iRow2
从1开始,从2开始,而不是1。你会有更多的列要组合,还是总是2?
=INDIRECT("B"&1+MOD(ROW()-1,2))