Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bereich auswählen letzte beschriebene Zelle

Bereich auswählen letzte beschriebene Zelle
07.03.2017 13:04:33
Peter
Hallo Ihr Excelspezialisten,
ich habe folgendes Problem:
In einer Tabelle1 sind Werte aus einer anderen Tabelle per Formel.
Nun möchte ich einen bestimmten Bereich auswählen und markieren.
Es geht um den Bereich A1:F bis zur letzten beschriebenen Zelle aus Spalte A
aber nur Werte nicht Formeln.
Folgenden Code habe ich gefunden aber markiert bis zur letzten beschriebenen
Zelle mit Formeln
Sub A_F_Sortieren()
Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
Dim Lz As Long    'letzte Zeile (wird ermittelt)
Sheets("Tabelle1").Select
Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
Ez = 1        'Vorgabe
Lz = ActiveSheet.Cells(Rows.Count, Spalte).End(xlUp).Row  'ermitellt letzte Zeile
Sheets("Tabelle1").Range(Spalte & Ez & ":F" & Lz).Select
End Sub
Wie muss der o.a. Code geändert werden, damit er nur den Bereich auswählt der Werte
beinhaltet.
Danke für Eure Hilfe.
Gruss
Peter
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 13:10:31
ChrisL
Hi Peter
z.B. so...
Sub A_F_Sortieren()
Dim Spalte As String
Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
Dim Lz As Long    'letzte Zeile (wird ermittelt)
Dim i As Long
With Worksheets("Tabelle1")
Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
Ez = 1            'Vorgabe
Lz = .Cells(Rows.Count, Spalte).End(xlUp).Row  'ermitellt letzte Zeile
For i = Lz To Ez Step -1
If .Cells(i, Spalte)  "" Then Exit For
Next i
.Range(Spalte & Ez & ":F" & i).Select
End With
End Sub

cu
Chris
Anzeige
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 13:16:21
Peter
Hallo Chris,
besten Dank für Deine Hilfe. Hat fast geklappt.
Statt If .Cells(i, Spalte) "" Then Exit For habe ich geändert auf
If .Cells(i, Spalte) "0" Then Exit For
Damit klappt es.
Wünsche noch einen schönen Tag.
Gruss
Peter
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 14:11:48
Peter
Hallo Chris,
jetzt komme ich nicht weiter. Ich möchte die Tabelle sortieren.
Mit dem Recorder habe ich folgenden Code aufgezeichnet:
Sub SortierenAbisF()
' SortierenAbisF Makro
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range( _
"A2:A214"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SetRange Range("A1:F214")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Kannst Du mir dies in das von Dir erstellte Makro einbauen?
Besten Dank
Gruss
Peter
Anzeige
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 14:25:35
ChrisL
Hi Peter
Hier zusammengewurstelt...
Sub SortierenAbisF()
Dim Spalte As String
Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
Dim Lz As Long    'letzte Zeile (wird ermittelt)
Dim i As Long
With Worksheets("Tabelle1")
Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
Ez = 1            'Vorgabe
Lz = .Cells(Rows.Count, Spalte).End(xlUp).Row  'ermitellt letzte Zeile
For i = Lz To Ez Step -1
If .Cells(i, Spalte)  0 Then Exit For
Next i
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("A2:A" & i), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
.Sort.SetRange .Range("A1:F" & i)
.Sort.Header = xlYes
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
End Sub

cu
Chris
Anzeige
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 15:50:06
Peter
Hallo Chris,
funktioniert einwandfrei. Vielen Dank für Deine Hilfe.
Gruss
Peter
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 13:21:08
Werner
Hallo Peter,
ich mache das immer mit der Find Methode.
Public Sub Bereich_markieren()
Dim loLetzte As Long
Dim raBereich As Range
With Sheets("Tabelle1")
loLetzte = .Range("A:A").Cells.Find("*", LookIn:=xlValues, searchdirection:=xlPrevious).Row
Set raBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 6))
raBereich.Select
End With
End Sub
Gruß Werner
Anzeige
AW: Bereich auswählen letzte beschriebene Zelle
07.03.2017 13:23:44
Peter
Hallo Werner,
besten Dank für Deine Hilfe.
Das Ergebnis von Chris funktioniert einwandfrei.
Werde aber Deine Version noch testen.
Gruss
Peter

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bereich auswählen: letzte beschriebene Zelle in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Bereich bis zur letzten beschriebenen Zelle in Excel VBA auszuwählen, kannst du den folgenden Code verwenden. Dieser Code wählt nur die Werte und ignoriert Formeln:

Sub A_F_Sortieren()
    Dim Spalte As String
    Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
    Dim Lz As Long    'letzte Zeile (wird ermittelt)
    Dim i As Long
    With Worksheets("Tabelle1")
        Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
        Ez = 1            'Vorgabe
        Lz = .Cells(Rows.Count, Spalte).End(xlUp).Row  'ermittelt letzte Zeile
        For i = Lz To Ez Step -1
            If .Cells(i, Spalte) <> "" Then Exit For
        Next i
        .Range(Spalte & Ez & ":F" & i).Select
    End With
End Sub

Häufige Fehler und Lösungen

  • Fehler: Der Bereich wird bis zur letzten Zelle mit einer Formel ausgewählt.

    • Lösung: Stelle sicher, dass die Bedingung If .Cells(i, Spalte) <> "" korrekt ist, um nur Zellen mit Werten zu erkennen.
  • Fehler: Der Code funktioniert nicht in einer anderen Tabelle.

    • Lösung: Prüfe, ob der Tabellenname in With Worksheets("Tabelle1") korrekt ist.

Alternative Methoden

Eine alternative Methode zur Auswahl des Bereichs bis zur letzten beschriebenen Zelle ist die Verwendung der Find-Methode. So kannst du es umsetzen:

Public Sub Bereich_markieren()
    Dim loLetzte As Long
    Dim raBereich As Range
    With Sheets("Tabelle1")
        loLetzte = .Range("A:A").Cells.Find("*", LookIn:=xlValues, SearchDirection:=xlPrevious).Row
        Set raBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 6))
        raBereich.Select
    End With
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du den vorherigen Code zum Sortieren der Daten erweitern kannst:

Sub SortierenAbisF()
    Dim Spalte As String
    Dim Ez As Long    'erste Zeile (hast Du vorgegeben)
    Dim Lz As Long    'letzte Zeile (wird ermittelt)
    Dim i As Long
    With Worksheets("Tabelle1")
        Spalte = "A"      'Spalte, in der die letzte Zeile ermittelt werden soll
        Ez = 1            'Vorgabe
        Lz = .Cells(Rows.Count, Spalte).End(xlUp).Row  'ermittelt letzte Zeile
        For i = Lz To Ez Step -1
            If .Cells(i, Spalte) <> 0 Then Exit For
        Next i
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.Range("A2:A" & i), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .Sort.SetRange .Range("A1:F" & i)
        .Sort.Header = xlYes
        .Sort.MatchCase = False
        .Sort.Orientation = xlTopToBottom
        .Sort.SortMethod = xlPinYin
        .Sort.Apply
    End With
End Sub

Tipps für Profis

  • Nutze die Find-Methode, um die letzte beschriebene Zelle effizienter zu finden, besonders bei großen Datenmengen.
  • Überlege, ob du den Code in einem Modul speichern möchtest, um ihn wiederverwenden zu können.
  • Teste deine Makros in einer Kopie der Arbeitsmappe, bevor du sie auf wichtige Daten anwendest.

FAQ: Häufige Fragen

1. Wie finde ich die letzte beschriebene Zelle in einer bestimmten Spalte?
Du kannst die End(xlUp)-Methode verwenden, um die letzte Zeile in einer Spalte zu ermitteln.

2. Kann ich den Bereich auch in einer anderen Tabelle auswählen?
Ja, ändere einfach den Namen in Worksheets("TabelleName") auf den Namen deiner gewünschten Tabelle.

3. Was mache ich, wenn der Code nicht funktioniert?
Prüfe die Referenzen auf die richtigen Tabellen und Bereiche und stelle sicher, dass keine Schreibfehler im Code sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige