Wählen Sie eine gesamte Spalte ohne Kopfzeile in einem Excel-Makro aus

63019
Dave

Wie würde ich auf einen Bereich zugreifen, der einer ganzen Spalte entspricht, beginnend bei Zeile 2 (es gibt eine Kopfzeile)?

Das Ende der Auswahl sollte die letzte nicht leere Zelle in der Spalte sein.

8

5 Antworten auf die Frage

5
Peter Mortensen

Siehe den Microsoft-Support-Artikel Auswählen von Zellen / Bereichen mithilfe von Visual Basic-Prozeduren in Excel Nr. 19 ( Auswählen eines gesamten Bereichs zusammenhängender Zellen in einer Spalte ).

Dadurch werden über eine Million Zeilen in der Arbeitsmappe ausgewählt, die ich verwende, obwohl alles über 300 hinaus leer ist. Dave vor 15 Jahren 0
Wie sieht es aus: Sub LastCellBeforeBlankInColumn () / Range ("A1"). End (Xldown) .Select / End Sub vor 15 Jahren 0
2
Michael Galos

Versuche dies:

Range(Range("A2"),Range("A2").End(xldown)).Select 

oder dieses:

Range(Range(Cells(2, 1), Cells(2, 1)), Range(Cells(65535, 1), Cells(65535, 1)).End(xlUp)).Select 
1
Peter Mortensen

Sie können die Excel-Tastenkombinationen verwenden. Versuchen Sie es mit Ctrl+ Home.

Dies würde Sie zur Zelle A1 führen (wenn Sie den Freeze-Bereich nicht verwendet haben). Kommen Sie eine Zelle nach unten und wählen Sie dann mit den Ctrl+ Shift+ Down arrowTasten die letzte eingegebene Zeile aus.

Wenn Sie den Spaltenwert auswählen müssen, verwenden Sie die right arrowSchaltfläche anstelle der down arrowSchaltfläche.

1
nixda

Bezüglich dieser SO-Antwort ist die einzige sichere Methode die .find()Methode.
Alle anderen Methoden können zu falschen Ergebnissen führen, wenn Sie zuvor einige Zellen gelöscht haben.

Beispiel, um die letzten Zellen zu erhalten

Lastrow = Cells.Find("*", [A1],, , xlByRows, xlPrevious).Row Lastcol = Cells.Find("*", [A1],, , xlByColumns, xlPrevious).Column 

Und eine konkrete Antwort auf Ihre Frage (vorausgesetzt, Ihre Daten befinden sich in Spalte 2, beginnend bei Zeile 2).

Range([B2], [B:B].Find("*", [B1],, , xlByRows, xlPrevious)).select 

enter image description here

0
RWB

Dieser Code berechnet im Durchschnitt alles außer der Kopfzeile mit der Kopfzeile in Zelle "B1".

Dim GG as Long GG = Application.WorksheetFunction.Average(ActiveSheet.Range("B2", Range("B2").End(xlDown)))