google-sheets - 如果文本包含(过滤或查询),则按具有 2 个字段的数组过滤
问题描述
我需要帮助,因为我不知道如何制作这个公式。我尝试了 FILTER 和 QUERY 函数的多种变体,但仍然没有成功。
我有 2 张纸:
用户 - 包含用户电子邮件和 2 个位置列:城市和州
LOCATIONS - 包含 2 列:城市和州 - 它是位置列表
我需要第三张表来列出位置在 LOCATIONS 表中列出的所有用户。每个用户都应该在自己的行中。
条件:
提取的用户必须将城市和州列与 LOCATIONS 表中的列相匹配,以避免在我只需要其中一个时从多个位置(如俄勒冈州波特兰和德克萨斯州波特兰)获取用户
如果用户在多个位置,则 USERS 中的城市列可能在单个单元格内有多个城市,用“,”分隔,因此需要通过“如果文本包含”条件过滤城市
这是示例表的副本:https ://docs.google.com/spreadsheets/d/1XruYIMq0nklFInqcGtzN7nd26rXTNnudsZNMI70uG4I/copy
解决方案
尝试:
=ARRAYFORMULA(IFNA(VLOOKUP(E2:E&"♥"&F2:F;
REGEXREPLACE(TRIM(SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(TRIM(SPLIT(
FLATTEN(IF(IFERROR(SPLIT(USERS!B2:B; ","))="";;
SPLIT(USERS!B2:B; ",")&"♥"&USERS!C2:C&"♠♦"&USERS!A2:A&",♦"&USERS!A2:A)); "♦"));
"select Col1,max(Col2) where Col2 is not null group by Col1 pivot Col3");
"offset 1"; 0));;9^9)); "♠")); ",$"; ); 2; 0)))
更新:
=ARRAYFORMULA(QUERY({USERS!A:C, TRIM(FLATTEN(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(USERS!B:B, ","))="",,
SPLIT(USERS!B:B, ",")&"♥"&USERS!C:C)),,9^9)))},
"select Col1,Col2,Col3 where Col4 matches '.*"&TEXTJOIN(".*|.*", 1,
IF(LOCATIONS!A2:A="",,LOCATIONS!A2:A&"♥"&LOCATIONS!B2:B))&".*'", 1))
推荐阅读
- excel - VBA 从一个 Word Doc 复制到另一个 Excel
- reactjs - CRA 应用程序在生产构建后不运行?
- python - MySQL/Python 中的“TypeError:格式字符串的参数不足”
- php - 无法移动上传的文件
- database - 工作流数据库结构
- node.js - 如何在没有 dotenv 的情况下运行项目?
- javascript - 如何组合不同对象中的数组对象
- python - 努力理解 Python 输出(Unicode、UTF-8、不同的 Python 版本)
- javascript - 如何在 Eclipse 中从另一个 JavaScript 文件导入 JavaScript 方法
- php - Symfony 5 Form 类实体管理器