excel — перекрестное умножение текстовых данных в переполнении стека

У меня есть два листа Excel

Столбцы первого листа:

ColA ColB ColC ColD ColE (containing M rows) ~700 rows
A     B    C    D    E
AA   BB   CC    DD   EE

Колонны второго листа:

Col1 Col2 Col3 Col4 (containing N rows) ~ 100 rows
1     2    3    4
11    22   33   44

Окончательный набор результатов:

ColA ColB ColC ColD ColE Col 1 Col2 Col3 Col4
A    B     C    D    E   1      2    3    4
A    B     C    D    E   11    22    33   44
AA   BB   CC   DD   EE   1      2     3    4
AA   BB   CC   DD   EE   11    22    33    44

Я хочу получить итоговую электронную таблицу, которая будет перекрестным умножением двух вышеупомянутых листов: M X N строк и скопировать их обратно в csv / excel.

Я использую PHP для перекрестного соединения двух листов. Я конвертировал оба листа в csv, поэтому мой первый лист — csv1, а второй — csv2.

<?php
$csv1 = array_map('str_getcsv', file('Book1.csv'));
$csv2 = array_map('str_getcsv', file('Book2.csv'));

$ans = array();

foreach ($csv1 as $key1) {
foreach ($csv2 as $key2) {
$ans[] = $key1 . ' ' . $key2;
}
}

$fp = fopen('file.csv','w');

foreach($ans as $fields) {
fputcsv($fp, $fields);
}
?>

По какой-то причине это не работает. Сервер не отвечает, и файл не заполняется.

0

Решение

Вам придется написать некоторый код VBA. Если под «быстрее» вы имеете в виду «проще», почти без разработки, вставьте и добавьте два листа в Access в виде отдельных таблиц и создайте запрос с открытым объединением двух таблиц, выбрав все поля.

0

Другие решения

Если вы хотите сделать это исключительно в Excel, вы можете сделать это с помощью операторов INDIRECT (), ROW () и MOD (). Вы должны знать, что делать это полностью в Excel — не лучший способ вычислить около 70 000 строк данных.

0