【问题标题】:Extract values between two rows with specific text (dynamic range)提取具有特定文本的两行之间的值(动态范围)
【发布时间】:2020-07-17 14:28:54
【问题描述】:

我想知道是否有一个 Excel 公式解决方案?我知道可以使用 VBA 完成,但为了简单起见,如果可能的话,我更喜欢使用 Excel 公式。

有两个准则Start rangeEnd range(例如错字)。我想在中间的行中获取文本,在本例中为 Part onePart two。问题是可以有更多的行,比如Part threePart four = Range 是动态的。

基本上(像 VBA)公式应该在 C 列中找到两个单词 Start rangeEnd range 并在其间获取文本,从 Start range 之后的第一个单词开始,直到 End range 之前的最后一个单词。

有没有办法用 Excel 公式来执行此操作?

我可能可以通过使用 SUMPRODUCT 获得单元格位置:

=SUMPRODUCT((C2:C5="Start range")*ROW(C2:C5))

=SUMPRODUCT((C2:C5="Eng range")*ROW(C2:C5))


编辑:

这似乎有效,但它只给出范围内的第一个结果作为输出。如何使用“下拉”获得范围内的所有结果?

=INDEX($C:$C;N(IF(1;ROW(INDEX($C:$C;MATCH("Start range";$C:$C;0)+1,1):INDEX($C:$C;MATCH("Eng range";$C:$C;0)-1;1)))))

结果应该是:

Part one
Part two

【问题讨论】:

  • 您可以使用 FILTER 功能吗?和序列?
  • @BigBen 很遗憾没有。
  • 您的最终结果会是什么样子?你提到你想get text in between?
  • @JvdV 我已经编辑了我的问题。见编辑部分

标签: excel excel-formula


【解决方案1】:

试试这个:

=INDEX(C:C,SMALL(IF((ROW(C:C)>MATCH("Start Range",C:C,0))*(ROW(C:C)<MATCH("Eng Range",C:C,0))=1,ROW(C:C),""),ROW(A1)))

或者让你的公式起作用:

=INDEX(INDEX($C:$C;N(IF(1;ROW(INDEX($C:$C;MATCH("Start range";$C:$C;0)+1,1):INDEX($C:$C;MATCH("Eng range";$C:$C;0)-1;1))))),ROW(A1))

通过CSE输入为数组,向下拖动公式。

【讨论】:

    猜你喜欢
    • 2022-12-20
    • 2023-01-04
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多