如何将 MATCH() 函数仅应用于已筛选的范围?或者还有其他方法吗?

如何将 MATCH() 函数仅应用于已筛选的范围?或者还有其他方法吗?

我有一个经过筛选的值列表。假设我有从0到 的数字5,并且2被筛选掉:

A (with auto-filter against "2")
0
1
3
4
5

现在我想知道另一张表中的某个值是否属于该值已过滤列表。但是,尽管此行不在过滤范围内,MATCH(2;A;0)我仍然得到输出。33

MATCH()函数不知道过滤器,这就是为什么我得到的匹配结果不在过滤范围内。

如何将排序函数MATCH()仅应用于已筛选的范围?或者还有其他方法可以得到所需的输出?

从答案可以看出,这个问题对于 Microsoft Excel 来说几乎是相同的(在较新的 Excel 版本中,变化很小,您可能不再需要矩阵触发器Ctrl+ Shift+ Enter,而只需要Enter)。这就是为什么它也获得 Excel 标签的原因。

答案1

如果你正在使用,那么你可以使用和MS365使上述公式更短LET()SEQUENCE()

在此处输入图片描述


对于旧版本的 Excel -->

• 单元格中使用的公式G5

=MATCH(1,IF(SUBTOTAL(3,OFFSET(Sheet1!$A$2:$A$7,
  ROW(Sheet1!$A$2:$A$7)-ROW(Sheet1!$A$2),0,1))>0,
  IF(Sheet1!$A$2:$A$7=Sheet1!F5,1)),0)

或者,在MS365

• 单元格中使用的公式G6

=LET(α,Sheet1!A2:A7,MATCH(1,IF(SUBTOTAL(3,OFFSET(α,SEQUENCE(ROWS(α))-1,0,1))>0,IF(α=F5,1)),0))

  • 因此,基本上,我尝试使用该SUBTOTAL()函数实现的是获取未隐藏或过滤掉的值列表,在下面的函数中,表示3有助于COUNTA()创建OFFSET()动态范围。以下屏幕截图和公式将为您提供清晰的思路。此外,由于我使用的是,因此MS365不需要点击CTRL++ ,但旧版本需要点击。SHIFTENTER

在此处输入图片描述


=SUBTOTAL(3,OFFSET(Sheet1!$A$2:$A$7,ROW(Sheet1!$A$2:$A$7)-ROW(Sheet1!$A$2),0,1))

以上内容与

=SUBTOTAL(3,OFFSET(α,SEQUENCE(ROWS(α))-1,0,1))

α范围在哪里Sheet1!A2:A7


  • 从上面的截图中可以看出,被过滤掉的那个2显示为0,因为找到的是1s,当对公式的这一部分进行求值时,它显示为全部,FALSE因为在这里找不到匹配的值2

在此处输入图片描述


  • 因此,当我们包装内部MATCH()以获取所有TRUEie时,由于无法找到它1,我们#N/A无法获得它。

但如果我们尝试查找其他值,它将通过显示行位置为我们提供所需的输出。所应用的逻辑对于其他版本以及对于LibreOffice也相同。

在此处输入图片描述


现在由提问者对德国自由办公室(作品)进行检查:

  • G5
  • 粘贴VERGLEICH(1;WENN(TEILERGEBNIS(3;VERSCHIEBUNG($A$2:$A$7;ZEILE($A$2:$A$7)-ZEILE($A$2);0;1))>0;WENN($A$2:$A$7=F5;1));0)
  • Ctrl+ Shift+ Enter
  • 查看矩阵({})函数{=VERGLEICH(1;WENN(TEILERGEBNIS(3;VERSCHIEBUNG($A$2:$A$7;ZEILE($A$2:$A$7)-ZEILE($A$2);0;1))>0;WENN($A$2:$A$7=F5;1));0)}

在此处输入图片描述

为了理解主要的技巧,下面是矩阵中小计的工作方式:

  • 标记G7G12(或任何其他位于彼此下方的 5 个空单元格)。
  • F2在 5 个单元格被标记时按下。
  • 现在您将位于 5 个牢房中的第一个牢房中。
  • 粘贴TEILERGEBNIS(3;VERSCHIEBUNG($A$2:$A$7;ZEILE($A$2:$A$7)-ZEILE($A$2);0;1))
  • Ctrl+ Shift+ Enter
  • 参见0中填充的 5 个单元格矩阵:G92

在此处输入图片描述

相关内容