工作表 - 查询和交叉引用多个工作表

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

我有一个查询栏。我试图获取该单元格的返回值,查看它是否包含字符串,并从查询与 A 列匹配的 B 列中提取值,但前提是另一列为空。一切都是字符串。

例如:

表 1:静态报告

A 栏
查询

表 2:滚动日志

数据 其他数据
精简数据 其他数据

表 3:静态数据库

代码列表 扩展信息
代码 代码说明

我是如何尝试这样做的:

=QUERY({RollingLog!$A2:B;StaticDB!A2:B},"SELECT Col4 WHERE Col1 LIKE Col3"&if(Col2=""))

尝试将 RollingLog 上的数据与 StaticDB 上的 CodeList 进行比较,并从 StaticDB 返回 Expanded,其中代码包含在数据中,但仅限于其他数据为空的行。

我的做法可能是错误的,有什么想法吗?

google-sheets google-sheets-formula
1个回答
0
投票

在“StaticReport”的单元格 B2 中尝试此公式,其中单元格 A2 包含 RollingLog!A1 的值。


=query(
let(frag ,A2,
map(
  query({StaticDB!A1:B},"select Col1 where Col1 is not null",),
  query({StaticDB!A1:B},"select Col2 where Col1 is not null",),
lambda(s,i,if(regexmatch(frag,s),i,)))
),"select Col1 where Col1 is not null",)

逻辑

  • opening query 只是从 lambda 结果中删除空白行。 (几乎可以肯定,可能有更好的方法来做到这一点。)
  • let - 允许定义来自 RollingLog!A1
  • 的值
  • map - 使用查询定义两个数组,每个数组用于“CodeList”和“Expanded Info”
  • 拉姆达
    • 使用“CodeList”中的每个值测试RollingLogA1regexmatch
    • 如果为 TRUE,则返回“扩展信息”的相应值

h/t @ninjagecko Google 表格公式中的多个正则表达式匹配


示例 - 静态报告

statisreport


示例 - StaticDB

staticdb

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