如何使用 excel 2007 在一行中动态填充带有“第一个匹配项”的过滤器列表

如何使用 excel 2007 在一行中动态填充带有“第一个匹配项”的过滤器列表

我没有很好的描述

该图像是我正在处理的一个例子。我试图在最左边的列中编写一个公式,就在您可以看到的列表框单元格下方,它将在该行中找到一个字符串/值匹配。我在屏幕截图中将其称为“x”。

我当然也会将此公式复制到下面的其他行。我打算使用此“第一个匹配项”填充您可以在最左侧列中看到的筛选器列表(列表框单元格)。

到目前为止,我尝试了 Hlookup 和 Vlookup 的变体,但没有成功。我该如何让它工作?

编辑 1:值“x”本身就是返回值。(不正确!请参阅编辑 3

编辑 2:使用的公式——稍后会这样做。所述 excel 文件在另一台机器上,我现在无法访问。

编辑3:抱歉。我实际上希望返回值是相应的日期。例如,在第一行中,找到“匹配”后的返回值将是 19。依此类推。现在对我来说,使用日期而不是 x 更有意义,因为在某些列中,“x”可能远至 9 月,而在其他一些列中则可能是 6 月。我将把数字格式化为“dd-mon”,以便在将来修订我的工作表时更加清晰。

答案1

使用

=Match("x",1D 数组)

返回排序数组中的第一个匹配项。

添加:

= 偏移量(日期行,0,匹配(“x”,1D 数组)-1)

答案2

HLOOKUP查找匹配项并返回匹配项上的内容,如果找到则返回匹配项下的匹配项。

您可以使用INDEXMATCH作为一种解决方法,它同样快(如果不是稍微快一点的话)。

=INDEX($T3:$AP3, MATCH("x", T4:AP4, 0))

相应地改变范围。

如果您的字符串不是空白单元格,则可以使用:

=INDEX($T3:$AP3, MATCH(true, INDEX((T4:AP4<>""),0), 0))

答案3

=IF(AVERAGE(lookup(2,1/C44:C46<>"")=1,2,SUM(LOOKUP(2,1/D44:D46<>""),0))) IF(AVERAGE(lookup(2,1/C44:C46<>"")=1,SUM(LOOKUP(2,1/D44:D46<>""),0)))

最后一行条目匹配示例 1 或 2 所以请更正公式

相关内容