【问题标题】:How to reverse Match for cell containing string Excel 2010如何为包含字符串 Excel 2010 的单元格反转匹配
【发布时间】:2022-09-23 14:10:26
【问题描述】:

从列我想查找列 A,从我的当前行开始,找到第一个带逗号的单元格。目标是在每一行中都有正确的日期。 我在https://i.imgur.com/BByfjzy.png工作的表

=MATCH(\"*\"&\",\"&\"*\",$A$1:INDIRECT(\"A\" & ROW()),0)

如果我可以向后运行它,那就太好了,但我没有找到一种适用于通配符或包含在 excel 2010 中的方法。我的另一个想法是根据位置创建一个范围,反转它,找到索引并执行长度 - 索引,但我不确定我会怎么做。我对 excel 很陌生,所以任何帮助都会得到帮助。

    标签: excel excel-formula excel-2010


    【解决方案1】:

    =MAX(IF(ISNUMBER(FIND(",",A1:INDEX(A:A,ROW()))),ROW(A1:INDEX(A:A,ROW())),))

    MATCH 不是从上到下查找并返回第一个匹配项,而是使用 MAX 返回包含, 的单元格的最大行号。您可以使用 FIND 或 SEARCH。

    如果将其包装在 INDEX 中,您将获得您的价值:

    =INDEX(A:A,MAX(IF(ISNUMBER(FIND(",",A1:INDEX(A:A,ROW()))),ROW(A1:INDEX(A:A,ROW())),)))

    可能需要使用ctrl+shift+enter 输入。我无法在旧版 Excel 中对其进行测试。

    编辑以进一步解释其工作原理:

    A1:INDEX(A:A,ROW()) 将被读取为单元格 A1 直到 A 列中的当前行。因此,如果您位于第 10 行,它将等于 A1:A10。 将该范围包装在 FIND 中会返回您尝试查找的字符的位置。 如果在单元格中未找到给定字符,则返回错误 #N/A。

    因此,如果在这种情况下,第 1 行和第 9 行包含 ,,它会返回命中的数字数组和非命中的错误,例如 {2,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,6,#N/A} 将其包装在ISNUMBER 中会将非错误更改为TRUE,将错误更改为FALSEIF 采用该数组,如果是 TRUE(一个数字),它返回行号(使用相同的索引范围)。 然后MAX 返回该数组的最大行号。

    除了FIND,您还可以使用SEARCH。 FIND 区分大小写,而 SEARCH 不区分大小写,而且它们的操作方式相同)。

    【讨论】:

    • 非常感谢,这很好用。我一生都无法弄清楚它是如何工作的,但确实如此。 find 的文档甚至没有说您可以使用范围。是这样吗?
    • 很高兴我能帮上忙。编辑了我的答案以获得进一步的解释
    猜你喜欢
    • 2017-03-08
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2016-09-09
    • 2022-11-19
    • 2013-02-04
    相关资源
    最近更新 更多