在功能上创建具有更多范围/表的多行数据

问题描述 投票:1回答:2

我正在寻找一种基于两个不同表来重复记录/行的方法,如下所示:

TABLE 1:
Col1  Col2
A     101
B     102
C     103

TABLE 2:
1
2
3

REPEATING RESULTS:
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功能等。

PS。我没有正确地写标题,因为我不知道如何称呼这样的任务。对于那些对标题有更好建议的人,请发表评论,我将其更改。

google-sheets google-sheets-query
2个回答
2
投票

您可以通过在Google Apps脚本中创建的custom function完成此操作。为此,请按照下列步骤操作:

  • 在电子表格中,选择工具>脚本编辑器打开绑定到文件的脚本。
  • 在脚本编辑器中复制此功能,并保存项目:
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;
}
  • 现在,如果您返回电子表格,则可以像使用其他任何功能一样使用此功能。您只需要提供适当的表范围作为参数,就可以在这里看到:

enter image description here

我希望这会有所帮助。


0
投票

看看是否可行

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

更改范围以适合。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.