
Ich habe Daten wie:
Ich muss lokalisieren(Zeilennummern abrufen)für Zellen, die mit dem Buchstaben beginnenA.
Mein aktueller Ansatz ist die Verwendung einer „Hilfsspalte“. InB1Ich betrete:
=IF(LEFT(A1)="A",1,"")
und inB2Ich betrete:
=IF(LEFT(A2)="A",MAX($B$1:B1)+1,"")
und nach unten kopieren. Dies identifiziert die Zeilen von Interesse. Schließlich inC1Ich benutze:
=IFERROR(MATCH(ROWS($1:1),$B$1:$B$23,0),"")
und nach unten kopieren.
Mein Ziel ist es, die Spalte „Helfer“ zu eliminieren.
Die einzigen zwei Optionen, die ich sehe, sind:
- einen Autofilter verwenden
- Verwenden Sie ein VBAUDF
Der Autofilter-Ansatz ist schlecht, da der Filter bei jeder Aktualisierung der Daten erneut ausgeführt werden müsste. DerUDFAnsatz schlecht, da das Blatt in einer VBA-freien Umgebung funktionieren muss.
Gibt es irgendeine Art von Formel oder Array-Formel, mit der ich die Zeilennummern abrufen kann, oder hänge ich an der „Hilfsspalte“ fest?
Antwort1
Versuchen Sie dies als Array-Formel mit Ctrl+ Shift+ eingegeben Enter:
{=SMALL(IF(LEFT($A$1:$A$23)="A",ROW($A$1:$A$23),9E+99),ROW())}
Ich gehe jedoch davon aus, dass Ihr Kriterium in Ihrer tatsächlichen Anwendung komplizierter ist als dies. Sie können es LEFT($A$1:$A$23)="A"
durch jedes beliebige Kriterium ersetzen und es wird trotzdem funktionieren.
Beachten Sie, dass dies zurückgegeben wird, 9E+99
wenn Sie es für mehr Zeilen nach unten kopieren, als es Zeilen gibt, die mit „A“ beginnen. Sie können es so anpassen, dass stattdessen leer zurückgegeben wird:
{=IFERROR(SMALL(IF(LEFT($A$1:$A$14)="A",ROW($A$1:$A$14),""),ROW()),"")}
Antwort2
Versuchen Sie Folgendes:
Geben Sie 0 in C1 ein.
Ab C2: =match(indirect("a"&c1+1&":a<last row>",true),"a*",0)+C1
Hinweise: Bei Übereinstimmungen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Sie müssen Fehler verwalten, nachdem die Übereinstimmungen gefunden wurden.