Google sheets 如果文本包含(筛选或查询),则按包含2个字段的数组进行筛选

Google sheets 如果文本包含(筛选或查询),则按包含2个字段的数组进行筛选,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我需要帮助,因为我不知道怎么做这个公式。我尝试了过滤器和查询函数的多种变体,但仍然没有成功 我有两张纸: 用户-包含用户电子邮件和两个位置列:城市和州 位置-包含两列:城市和州-这是一个位置列表 我需要一个第三页,将列出其位置在位置表中列出的所有用户。每个用户都应该在自己的行中 条件: 提取的用户必须将城市和州列与位置表中的列相匹配,以避免在我只需要其中一个位置时从多个位置获取用户,如波特兰、OR和波特兰、TX 如果用户位于多个位置,则用户中的城市列可能在单个单元格中有多个以“,”分隔的城

我需要帮助,因为我不知道怎么做这个公式。我尝试了过滤器和查询函数的多种变体,但仍然没有成功

我有两张纸:

  • 用户-包含用户电子邮件和两个位置列:城市和州

  • 位置-包含两列:城市和州-这是一个位置列表

  • 我需要一个第三页,将列出其位置在位置表中列出的所有用户。每个用户都应该在自己的行中

    条件:

  • 提取的用户必须将城市和州列与位置表中的列相匹配,以避免在我只需要其中一个位置时从多个位置获取用户,如波特兰、OR和波特兰、TX

  • 如果用户位于多个位置,则用户中的城市列可能在单个单元格中有多个以“,”分隔的城市,因此需要按“如果文本包含”条件筛选城市

  • 下面是一份示例工作表的副本:

    试试:

    =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)))
    


    更新:

    谢谢,我应该提到每个用户都需要在自己的行中。示例表应该只显示位置与位置表中的位置匹配的用户谢谢回答!它仍然缺少一件事,那就是原始帖子中的第一个条件,这就是为什么达拉斯德克萨斯州和达拉斯北卡罗来纳州的用户都出现了,而只有达拉斯德克萨斯州出现在位置表中。再次感谢你的帮助@MarkoStefanović已修复。最新答案
    =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))