У меня есть N таблиц по M строк в каждой таблице.
Например, у меня есть две таблицы A и B с 4 и 2 строками соответственно:
Таблица А
А1
А2
А3
А4
Таблица Б
А1
А2
Я хочу создать таблицу C размером 4x2 строки и объединить все возможные строки:
Таблица С
А1 Б1
А1 Б2
А2 В1
А2 Б2
А3 Б1
А3 Б2
А4 В1
А4 В2
Есть ли способ сделать это с помощью Excel, и если да, то как? Спасибо.
решение1
Допустим, у нас есть два списка:
и мы хотим сгенерировать все комбинации двух списков. Запуск этого макроса:
Sub generateCombinations()
Dim nA As Long, nB As Long, K As Long, i As Long, j As Long
Dim rc As Long
rc = Rows.Count
nA = Cells(rc, "A").End(xlUp).Row
nB = Cells(rc, "B").End(xlUp).Row
K = 1
For i = 1 To nB
vb = Cells(i, "B").Value
For j = 1 To nA
Cells(K, "C").Value = vb & " " & Cells(j, "A").Value
K = K + 1
Next j
Next i
End Sub
будет производить в столбцеС:
Макросы очень просты в установке и использовании:
- ALT-F11 открывает окно VBE
- ALT-I ALT-M открывает новый модуль
- вставьте текст и закройте окно VBE
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как.xlsmскорее, чем.xlsx
Чтобы удалить макрос:
- откройте окно VBE, как указано выше
- очистить код
- закрыть окно VBE
Чтобы использовать макрос из Excel:
- АЛЬТ-Ф8
- Выберите макрос
- Нажмите ПУСК
Чтобы узнать больше о макросах в целом, см.:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
и
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Для работы этого метода должны быть включены макросы!