Wie kann ich die letzte Zeile in einem Bereich von Zellen finden, die eine Formel enthalten, wobei das Ergebnis der Formel ein tatsächlicher Wert und nicht leer ist?
Sagen Sie vereinfacht, dass der Bereich der Zellen ("E1:E10")
eine Formel enthält, die sich auf die Zellen A1 bis A10 wie folgt bezieht =IF("A1"="","","A1")
. Aber nur die Zellen A1 bis A6 haben einen Wert ausgefüllt, so dass das Ergebnis der Formel für die Zellen E7 bis E10 leer ist.
Versuchen Sie es mit:
%Vor% führt dazu, dass lastRow den Wert von 10
hat. Was ich möchte ist, dass der Wert von lastRow in diesem Beispiel 6
ist.
Der eigentliche Code ist viel komplexer als dieser, so dass ich nicht einfach nach der letzten Zeile in Spalte A suchen kann, da sich die Formeln auf einzelne Zellen auf verschiedenen Blättern beziehen und dynamisch hinzugefügt werden.
Sie möchten die letzte Zelle in einer Spalte finden, die nicht leer UND keine leere Zeichenfolge ("") ist.
Folgen Sie einfach dem LastRow mit einer Schleife, die nach einer nicht leeren Zelle sucht.
%Vor% Beachten Sie, dass Ihr Rows.count
nicht angibt, welches Blatt. Das bedeutet, dass das aktive Blatt verwendet wird. Natürlich ist ActiveSheet.Range()
auch auf dem aktiven Blatt. Es ist jedoch eine schlechte Vorgehensweise, Range
oder Rows
mit .Range
oder .Rows
zu mischen. Es deutet auf eine gedankenlose Verwendung hin, die Sie bei einer Änderung von ActiveSheet
anstecken könnte, ohne dass die unspezifizierte Referenz geändert wurde.
Dies sollte Ihnen helfen, die letzte Zeile zu ermitteln, die eine Formel enthält (in der Spalte A
auf Blatt1 Sheet1
):
SpecialCells
wird verwendet, um den Bereich aller Zellen zu bestimmen, die eine Formel enthalten. Dieser Bereich wird dann mit Split
analysiert. Mit Ubound
wird die letzte dieser Zellen abgerufen. Das Ergebnis wird erneut geteilt, um die Zeilennummer zu extrahieren.
Tags und Links vba excel excel-vba excel-2013