
我有這樣的數據:
我需要找到(取得行號)對於以字母開頭的單元格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),"")
並抄下來。
我的目標是消除「助手」欄。
我看到的唯一兩個選項是:
- 使用自動過濾器
- 使用VBAUDF
自動過濾方法很糟糕,因為每當刷新資料時就必須重新執行過濾器。這UDF方法不好,因為工作表必須在無 VBA 的環境中工作。
是否有任何類型的公式或陣列公式可以獲得行號,或者我是否堅持使用“helper”列?
答案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
試試這個:
將 0 放入 C1 中。
來自 C2:=match(indirect("a"&c1+1&":a<last row>",true),"a*",0)+C1
注意:匹配不區分大小寫。在詢問找到匹配項後,您需要管理錯誤。