我有如下数据:
我需要找到(获取行号)对于以字母开头的单元格A。
我目前的方法是使用“辅助”列。在B1我输入:
=IF(LEFT(A1)="A",1,"")
以及B2我输入:
=IF(LEFT(A2)="A",MAX($B$1:B1)+1,"")
并向下复制。这标识了感兴趣的行。最后在C1我用:
=IFERROR(MATCH(ROWS($1:1),$B$1:$B$23,0),"")
并抄下来。
我的目标是消除“助手”栏。
我看到的唯一两个选项是:
- 使用自动过滤器
- 使用 VBA自定义函数
自动过滤方法很糟糕,因为每次刷新数据时都必须重新运行过滤器。自定义函数这种方法很糟糕,因为工作表必须在无 VBA 的环境中工作。
是否有任何类型的公式或数组公式可以获取行号,或者我是否只能使用“辅助”列?
答案1
尝试使用 ++ 输入以下Ctrl数组Shift公式Enter:
{=SMALL(IF(LEFT($A$1:$A$23)="A",ROW($A$1:$A$23),9E+99),ROW())}
不过,我推测您的实际应用中的标准比这个更复杂。您可以LEFT($A$1:$A$23)="A"
用任何您喜欢的标准替换,它仍然有效。
9E+99
请注意,如果您将其复制下来,行数超过以“A”开头的行数,则将返回此结果。您可以调整它以返回空白:
{=IFERROR(SMALL(IF(LEFT($A$1:$A$14)="A",ROW($A$1:$A$14),""),ROW()),"")}
答案2
试试这个:
在 C1 中输入 0。
从 C2:=match(indirect("a"&c1+1&":a<last row>",true),"a*",0)+C1
注意:匹配不区分大小写。找到匹配项后,您需要管理错误。