【问题标题】:Find text in range and extract number from alphanumeric cell在范围内查找文本并从字母数字单元格中提取数字
【发布时间】:2019-08-01 02:47:05
【问题描述】:

工作表 1 包含下面每天更新的名称和数量列表(即 AAA 是名称,1 是数量):

名称
看.AAA :1

look.BBB :2

look.CCC :3

我试图让工作表 2 中的表格在列范围内搜索文本并使用公式提取数量。

到目前为止,我已经尝试过搜索、查找、vlookup、查找和匹配功能(以及这些功能的组合),但一切都会产生错误。我试图看看其他人是否做过类似的事情,但我在网上找不到任何东西:

=match(aaa,sheet1!A2:A4)

我希望通过搜索名称并在单元格区域的文本中找到它来检索数量。

【问题讨论】:

    标签: excel-formula find range


    【解决方案1】:

    你在正确的轨道上。有几种方法可以做到这一点。 VLOOKUP、LOOKUP 和组合 INDEX/MATCH 是一些更常见的方法。由于您从 match 开始,此解决方案将继续使用您的方法。

    Match 会告诉您要查找所选范围的哪一行。您需要做的是从同一行但在不同列中返回值。对于初学者,我们只需要调整你的匹配公式。由于您正在寻找一个字符串(文本),并且正在对其进行硬编码,因此文本值应该用引号引起来。您的匹配公式变为:

    MATCH("AAA",sheet1!A2:A4,0)
    

    最后的零表示匹配您正在寻找完全匹配。 0 的其他可能值是 1 和 -1,但您需要有一个排序列表,它们将分别向前或向后进行近似匹配。对于反向搜索,列表需要以相反的顺序排序。

    现在您已经为所选范围内的正确行提供了一个公式,您可以在工作簿中其他位置匹配大小范围的 INDEX 公式中使用该公式。在这种情况下,您将它放在相邻的列中。您的最终公式变为:

    INDEX(Sheet1!B2:B4,MATCH("AAA",sheet1!A2:A4,0))
    

    备选方案

    VLOOKUP

    VLOOKUP("AAA",sheet1!A2:B4,2,0)
    

    【讨论】:

      【解决方案2】:

      见下文修订解决方案:

      我已为包含原始数据的列表命名为“Look_Rng”。

      我的逻辑是结合使用MIDLENFIND函数来提取数字范围和一个来自原始范围的文本范围

      号码范围:{=--MID(Look_Rng,FIND(":",Look_Rng)+1,LEN(Look_Rng)-FIND(":",Look_Rng))}

      这将返回 {1;20;300;3;2}

      文本范围:{=MID(Look_Rng,MIN(IFERROR(FIND(D2,Look_Rng),33000)),LEN(D2))}

      这将返回 {"AA";"oo";"CC";"e.";"lo"}

      然后使用 MATCH 函数查找给定名称在文本范围内的位置。例如,如果您在 Text Range 中查找 CC,它将返回 3

      最后,使用INDEX函数定位Number Range中对应位置的值。比如CCText Range中的第3位,所以它在Number Range中的对应位置是 300

      完整的公式很长,您必须在退出公式时按Ctrl+Shift+Enter 使其生效,因为它是一个数组公式

      {=INDEX(--MID(Look_Rng,FIND(":",Look_Rng)+1,LEN(Look_Rng)-FIND(":",Look_Rng)),MATCH(D2,MID(Look_Rng,MIN(IFERROR(FIND(D2,Look_Rng),33000)),LEN(D2)),0))}
      

      如果您还有其他问题,请告诉我。

      附:我同意@ForwardEd 的观点,如果您使用几个帮助列来分解原始数据并使用简单的 INDEX+MATCH 或 VLOOKUP 来查找值,会容易得多。无论如何,我的回答使用了相同的逻辑。

      【讨论】:

      • 名称有时会发生变化。例如,它总是会在措辞中显示 AAA、BBB 等,但它可能没有相同的前缀或后缀。所以有时它会显示looking.aaa.good
      • @Bigbro 您能否再提供 5 个显示文本字符串结构变化的示例数据,以便我修改我的解决方案?始终需要在文本字符串中找到模式才能始终如一地提取相关数据。
      • @Bigbro 请查看我的新答案,无论文本字符串中的前缀和后缀不同,该答案都有效。如果您的文本字符串结构中有任何我没有考虑到的变化,请告诉我。
      猜你喜欢
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 2021-10-21
      相关资源
      最近更新 更多