【问题标题】:VLOOKUP for any member of a comma-separated list in ExcelExcel 中逗号分隔列表的任何成员的 VLOOKUP
【发布时间】:2015-09-03 17:06:17
【问题描述】:

如果我有一个值数组,每个值都是 true 或 false,如下所示:

Foo TRUE
Bar FALSE
Spam FALSE
Egg TRUE
@987654329 @FALSE

包含逗号分隔列表的单元格如下:

Foo,Spam,Chips

如果逗号分隔列表中的任何值在表中具有TRUE 的值,我想要一个返回TRUE 的函数,如下所示:

Foo,Spam,ChipsTRUE 因为FooTRUE
Bar,Spam FALSE 因为既不是Bar也不是SpamTRUE
Egg,Foo TRUE FooEgg 都是 TRUE,函数适用于任何顺序的列表

本质上,我希望能够VLOOKUP 对任意长度的逗号分隔列表的每个成员,并返回结果的逻辑或。我假设我需要编写一个宏来执行此操作。不过我的 VBA 有点弱 - 我该从哪里开始?

【问题讨论】:

  • 包含逗号分隔的单元格中逗号的最大数量是多少?
  • 在实践中,我认为我永远不需要超过 5 个,但最好是任意长度。

标签: excel vba


【解决方案1】:

在 A1:B5 中使用您的表,并在 F1 中使用您希望在 E1 中执行检查的第一个分隔字符串:

=SUMPRODUCT(0+(ISNUMBER(SEARCH(","&A$1:A$5&",",","&E1&","))),0+B$1:B$5)>0

复制下来,对 E2、E3 等中的字符串给出类似的结果。

问候

【讨论】:

  • ...SUMPRODUCT 神秘而神秘,非常强大。谢谢,真的认为我需要一个宏!
  • 从来没有听说过这个功能被描述为“奥术”,但有点喜欢!不客气!
【解决方案2】:

如果我的问题正确,您可以使用这样的公式:

=OR(ISNUMBER(SEARCH("foo";E1));ISNUMBER(SEARCH("egg";E1)))

SEARCH:在文本中找到精确的数学;如果找到,则返回 1 个值 ISNUMBER:根据里面的值是否为数字返回真或假 和 或:即使其中一个文本在列表中,也使答案为真。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多