【问题标题】:FILTER() function where values exist in a rangeFILTER() 函数,其中值存在于一个范围内
【发布时间】:2021-12-15 04:05:43
【问题描述】:

让“serviceRendered”命名范围是一列值,其中单元格内有多个“服务”,以逗号分隔。示例:“公交卡、餐饮服务”或“餐饮服务、行动计划”等。

让“ListOfServices”成为一个命名范围,其中包含列中的每个服务。所以 A2 = "巴士通行证",A3 = "餐饮服务" 等等。

这是当前公式。

=filter(serviceRendered, serviceRendered <> "", serviceRendered <> "N/A")

但我想在公式中的某个地方添加:

, serviceRendered exists in ListOfServices. 

更具体地说,我希望 serviceRendered 单元格中的每个单词在 listOfServices 范围内都存在。因此,如果 serviceRendered 中有一个单元格显示“餐饮服务,巴士通行证”,我希望公式将其提取出来,因为 listOfServices 范围中存在“餐饮服务”和“巴士通行证”。

【问题讨论】:

  • 您能否分享一份您的电子表格副本,以便更好地解决问题?

标签: google-sheets google-sheets-formula formula spreadsheet


【解决方案1】:

尝试:

=FILTER(serviceRendered, 
        serviceRendered <> "", 
        serviceRendered <> "N/A", 
        REGEXMATCH(LOWER(serviceRendered), TEXTJOIN("|", 1, LOWER(ListOfServices))))

【讨论】:

  • 这更接近解决方案!但是,当我输入 serviceRendered--说“食品服务,oiewfhioewbf”时,即使“oiewfhioewbf”不是 listOfServices 中的服务,Filter() 仍会提取整个值。所以这个解决方案似乎依赖于 listOfServices 中存在的第一个词,但并不关心后面的其他词。
  • @WilliamToscano 你能分享一份你的工作表吗?
  • 您好!很抱歉迟到了回复,但我在这里发布了一个与此问题类似的问题:stackoverflow.com/questions/70981517/…我分享了一张工作表的副本并截取了屏幕截图。如果你能回答,我很感激你的时间!谢谢!
【解决方案2】:

如果我对问题的理解是正确的(如果没有任何电子表格、数据或布局可供查看,这无疑是很困难的),这可能就是您所追求的:

=ArrayFormula(FILTER(serviceRendered,MMULT(1*NOT(ISERROR(VLOOKUP(TRIM(SPLIT(serviceRendered,",")),ListOfServices,1,FALSE))),SEQUENCE(COLUMNS(SPLIT(serviceRendered,",")),1,1,0))=LEN(REGEXREPLACE(serviceRendered,"[^,]",""))+1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多