2013-07-24 5 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

Я обычно добавляю еще четыре пробела в начале строки для отступов ... Что касается вашего ответа, он будет содержать строку заголовков столбцов, поэтому вы можете захотеть запустить ваши iRow и iRow2 на 2 вместо 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)) 

оба скопированы в соответствии.