您可以使用公式生成 sql 语句。
步骤1。使用 importrange 仅获取标题。
将此公式粘贴到 Sheet1 A1 中:
=transpose(IMPORTRANGE("long-hairy-key","MASTER!A1:BN1"))
需要转置数据以制作垂直的字段名称列表。
第2步。添加列号。
将此公式粘贴到 B1 中:
=ARRAYFORMULA(ROW(OFFSET(A1,,,counta(A:A))))
在这一步中,您将获得如下所示的表格:
A B
1 FieldName1 1
2 FieldName2 2
3 FieldName3 3
4 FieldName4 4
5 FieldName5 5
第三步。组合 SQL 语句。
使用 C 列指示要在查询中选择哪些列:
A B C
1 FieldName1 1 1
2 FieldName2 2
3 FieldName3 3 1
4 FieldName4 4
5 FieldName5 5 1
并在空闲单元格 (F1) 中使用此公式:
="select Col"&JOIN(", Col",FILTER(B:B,C:C=1))
在我的例子中,这个公式给出了 string select Col1, Col3, Col5
,这可以在查询公式中使用:
=query(IMPORTRANGE("long-hairy-key","MASTER!A:BN"), F1)
使用附加列使您的 SQL 更智能,添加where
子句,order by
等等label
。
更新
所以这个分步解决方案并不能解决重新排列的列的问题。
诀窍是使用列名列表并将其保存为值:
- 粘贴步骤1中的公式:
=transpose(IMPORTRANGE("long-hairy-key","MASTER!A1:BN1"))
- 复制它→转到粘贴空间→值
然后你需要通过步骤 1 和 2 来制作当前的 firld 号码列表。
然后你实际上会有两张桌子。第一个将保存由 step1 和 step2 的公式生成的实际字段列表和字段编号。这是Table1
:
A B
1 FieldName1 1
2 FieldName2 2
3 FieldName3 3
4 FieldName4 4
5 FieldName5 5
第二个表将有 SQL 设置。这是Table2
::
A B C
1 FieldName1 1 1
2 FieldName3 3
3 FieldName2 2 1
4 FieldName4 4
5 FieldName5 5 1
其中的字段名称必须作为值输入。B列将包含vlookup
功能:
= vlookup(A1, table1!A:B, 2, 0)
甚至ArrayFormula
:
= arrayformula(vlookup(offset(A1,,,counta(A1:A)), table1!A:B, 2, 0))
这就是你需要开始的一切。然后让您的查询更智能。