【问题标题】:Excel OFFSET MATCH formula returning incorrect listExcel OFFSET MATCH 公式返回不正确的列表
【发布时间】:2021-05-01 11:23:53
【问题描述】:

处理偏移匹配公式以根据参考单元格返回唯一的值列表。

查找值单元格将有一个单词值,即 Cream

这个公式完全符合我对精确匹配的需要

= OFFSET(PRODUCT,MATCH($E$21,PRODUCT_MIX,0)-1,0,COUNTIF(PRODUCT_MIX,$E$21), 1)

但是 Cream 可能会在查找数组中显示为 Cream 或 Ice Cream 或 Ice Cream Cone .. 等可以显示为单个值或文本字符串或逗号分隔文本中的任何位置,因此我需要公式包含通配符“"&$E$21&""

引用和查找数组等被命名为范围

为了解决这个问题,我们花费了大量时间进行研究和测试,我们几乎可以让它工作,但现在卡住了。如果有人能指出我们正确的方向,将不胜感激

添加通配符后,公式会返回正确数量的结果,但不会返回实际正确的结果。

= OFFSET(PRODUCT,MATCH("*"&$E$21&"*",PRODUCT_MIX,0)-1,0,COUNTIF(PRODUCT_MIX,"*"&$E$21&"*"), 1)

例如,如果正确的结果数应为 4,则此公式将返回列中的前 4 个值,而不是正确的 4 个值

示例数据

PRODUCT_MIX PRODUCT
Cream Thickened Cream
Milk, Cream, Eggs Scrambled Eggs
Cheese, Crackers, Olives Antipasto
Ice, Cream Vanilla Ice Cream
Ice, Cream, Cone Ice Cream Cone
Milk, Milo Chocolate Milk

如果选择了奶油,我希望结果是一个包含增稠奶油、炒鸡蛋、香草冰淇淋、蛋卷冰淇淋的列表。

但当前的公式返回的是以下列表,增稠奶油、炒鸡蛋、开胃菜、香草冰淇淋

见下文,奶油被选择为黄色,公式返回的结果不正确

任何帮助将不胜感激

【问题讨论】:

  • 为了帮助您,能够将您的数据粘贴到工作表中以供使用是很有用的。如果您的数据是屏幕截图的形式,则无法做到这一点。
  • @NicholasHunter 表已添加示例数据以及当前公式结果的屏幕截图。谢谢
  • 您从命名范围PRODUCT 的开头偏移,开头将是B2,然后从与您的搜索值匹配的第一行开始。比你给你的偏移高度你的搜索值出现的实例数,但它会显示从B2 和向下的所有值,无论它们是否包含你的搜索值。
  • PRODUCT 是一个函数名,你应该调整你的名字以避免两者混淆。

标签: excel-formula excel-match


【解决方案1】:

我会发布这个以防万一。这是我能得到的最接近的,但我不知道如何挤出空单元格。以后我可能有更多时间来看看这个。

=IF(ISNUMBER(SEARCH("*" & $E$21 & "*", PRODUCT_MIX)),PRODUCT,"")

附:您可以在 VBA 中使用一行 (Range.AdvancedCopy) 来实现相同的目标。

【讨论】:

    【解决方案2】:

    使用 office365 时,您可以使用: =FILTER(B:B,ISNUMBER(SEARCH($E$21,A:A)))

    【讨论】:

      【解决方案3】:

      已解决! (3种方式)


      高级

      • 此解决方案解决了以下要求:输入“奶油”并返回“产品”列表中包含此单词的所有单元格(即“如果选择奶油,我希望结果是包含增稠奶油、炒鸡蛋、香草冰淇淋、蛋卷冰淇淋")
      • 注意:下面的单元格引用屏幕截图(以及指向无宏/安全谷歌表格的链接)
      • 3 种解决方案(Office 365 + 更早版本)

      屏幕截图

      见下文(链接部分),用于 4 个解决方案(3 个基于宏 + 1 个无宏但动态解决方案)的 google 表格(带有完整的宏代码、描述)。简要说明:

      • A:利用过滤器方法(建议解决方案)
      • B:没有过滤器,简单的 if 语句(溢出效应,返回滋扰 虽然是空​​白)
      • C:与 B 一样,但减少了令人讨厌的空白

      链接

      功能

      (为方便起见,上面的 google sheet 链接中的所有功能。对于相应区域中的第一个单元格,列 D。引用黄色阴影输入单元格。不区分大小写):

      方法A

      =FILTER(B2:B7,1*IFERROR(SEARCH(LOWER(D1),LOWER(B2:B7))/SEARCH(LOWER(D1),LOWER(B2:B7)),0)=1))
      

      方法B

      =SORT(IF(IFERROR(SEARCH(LOWER(C7),$A$7:$A$13)/SEARCH(LOWER(C7),$A$7:$A$13),0)=1,$A$7:$A$13,""),,-1)
      

      方法 C

      =UNIQUE(SORT(IF(IFERROR(SEARCH(LOWER(C7),$A$7:$A$13)/SEARCH(LOWER(C7),$A$7:$A$13),0)=1,$A$7:$A$13,""),,-1))
      

      注意事项

      • 潜在改进 (A-C):动态产品范围列表
      • 问题包含多余的信息/数据
      • 建议的公式包括“较低” - 即“区分大小写”
      • 首选方法 = A(需要 Office 365)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 2021-10-15
        • 2020-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多