Создать строки из комбинации других строк - PullRequest
2 голосов
/ 31 января 2020

Я ищу способ повторять записи / строки на основе двух разных таблиц, как показано ниже:

ТАБЛИЦА 1:

Col1  Col2
A     101
B     102
C     103

ТАБЛИЦА 2:

Col3
1
2
3

ПОВТОРНЫЕ РЕЗУЛЬТАТЫ:

Col1   Col2   Col3
A      101    1
B      102    1
C      103    1 
A      101    2
B      102    2
C      103    2
A      101    3
B      102    3
C      103    3

В «Microsoft Access» или SQL я могу сделать это очень быстро, используя SQL выберите строку:

SELECT table1.column1, table2.column1
FROM table1, table2 

, но мне интересно, есть ли способ сделать это в листах Google с функцией QUERY и т. д. c.

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Вы можете выполнить sh с помощью пользовательской функции , созданной в скрипте Google Apps. Для этого выполните следующие действия:

  • В вашей электронной таблице выберите Инструменты> Редактор скриптов , чтобы открыть скрипт, связанный с вашим файлом.
  • Скопируйте эту функцию в редакторе сценариев и сохраните проект:
function REPEAT(table1, table2) {
  var output = [];
  output.push([]);
  for (var i = 0; i < table1[0].length; i++) {
    output[0].push(table1[0][i]);
  }    
  for (var i = 0; i < table2[0].length; i++) {
    output[0].push(table2[0][i]);
  } 
  for (var i = 1; i < table2.length; i++) {
    for (var j = 1; j < table1.length; j++) {
      output.push([]);
      for (var k = 0; k < table1[j].length; k++) {
        output[output.length - 1].push(table1[j][k]);
      }    
      for (var k = 0; k < table2[i].length; k++) {
        output[output.length - 1].push(table2[i][k]);
      }       
    }
  }
  return output;
}
  • Теперь, если вы go вернетесь к своей электронной таблице, вы можете использовать эту функцию так же, как и с любой другой функция. Вам просто нужно указать соответствующие диапазоны таблиц в качестве параметров, как вы можете видеть здесь:

enter image description here

Я надеюсь, что это поможет вам.

0 голосов
/ 31 января 2020

Проверьте, работает ли это

=ArrayFormula(sort(split(transpose(split(textjoin(",", 1, split(textjoin(",", 1, A2:A4&"_"&transpose(B2:B4)),",")&"_"&A10:A12), ",")), "_")))

Измените диапазон для соответствия.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...