Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: letzte Zeile ermitteln, markieren und nutzen

letzte Zeile ermitteln, markieren und nutzen
05.08.2014 00:31:55
Florri
Hallo,
ich habe das Forum bereits ausgiebig durchforstet, jedoch finde ich leider nur Ansätze für die Lösung meines Problems. Aufgrund mangelnder Kenntnisse kann ich diese aber nicht zu einer Lösung vereinen. Deshalb hier nochmals die Beschreibung, wie Ihr mir helfen könntet.
Ich habe ein Datenblatt, in dem jeweils in 10 Blöcken a 7 Spalten Werte stehen. Es handelt sich um Daten zu Bewegungsversuchen. In der ersten Spalte eines jeden Blocks steht die absolute Zeit, in der zweiten Spalte möchte ich nun gerne die relative Zeit eintragen. Manuell geht das ja alles ganz problemlos, jedoch wäre es eine riesengroße Erleichterung, wenn das "automatisiert" ablaufen könnte.
Ich erkläre mein Vorhaben anhand von Block 1 (Spalte A - G), siehe auch Screenshot.
In Spalte A befindet sich die "Zeit". In Spalte B die relative Zeit "% Zeit". Ich springe nun zum Ende von Spalte A (= Reihe 46) und gebe folgende Formel in Spalte B, R 46 ein: = ("A46"/880)*100. Dann verwende ich Autofill und ziehe die Formel bis zu B2. Somit ergibt sich eine Spanne von 0 (in B3) bis 100 % (in B46). So führe ich das dann in den weiteren Blöcken fort. "% Zeit" wird also in den Spalten B, J, R, Z, AH, AP, AX, BF, BN, BV berechnet und eingetragen.
Leider ist jeder dieser Versuche unterschiedlich lange, so dass zuerst jeweils der letzte Wert in der Spalte für die "Zeit" ermittelt werden muss.
Insgesamt habe ich über 60 solcher Datenblätte, weshalb es wirklich eine wahnsinnige Erleichterung für mich wäre, wenn ich hierfür ein Makro anwenden könnte.
Userbild
Ich danke Euch schon mal im Voraus für Eure Bemühungen und gebe auf jeden Fall Rückmeldung.
Schönen Gruß
Florian

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 06:59:28
TOM
Guten Morgen Florian
Das sieht nach einem Programmierauftrag aus...
Die letzte leere Zelle findes Du mit:
Sub Test()
Range("A:A").End(xlDown).Offset(1, 0).Activate
End Sub
Gruss
TOM

AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 07:04:20
Hajo_Zi
Hallo Florian,
Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
Ein Nachbau sieht bestimmt anders aus als das Original.
Ein Link zur Datei oder ein Tabellen Ausschnitt nicht als Bild wäre nicht schlecht.

Jul 2014
 C
29Falsch
30496

verwendete Formeln
Zelle Formel Bereich N/A
C29=C27=C28  
C30=SUMMEWENN([Bildschirm.xlsm]Statistik!$Q$44:$Q$54;"<" &HEUTE();[Bildschirm.xlsm]Statistik!$R$54)  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.07 einschl. 64 Bit


Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)
Der Dateiname sollte was mit dem Problem zu tun haben.
Ich habe mir z.B. einen Ordner angelegt in dem ich alle Dateien aus dem Internet speichere. Bei Dateinamen wie Test..., Mappe…, Beispiel… wird eine vorhandene überschrieben.
Ein Bild in Excel geöffnet sieht anders aus als das Bild.
Ich habe kein Tool um ein Bild in Excel zu importieren.

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 07:25:19
Spenski
hi ich versteh deine frage nicht wirklich aber ich versuchs einfach mal.
B2=100/MAX(A:A)*A2 und danach runterkopieren
desweiteren würde ich dir dynamische tabellen empfehlen.
da aber keine BSP Datei vorliegt kann man auch nicht viel mehr zu sagen
gruss

letzte Zeile ermitteln und Formel eintragen
05.08.2014 07:40:38
Matthias
Hallo Florian
Ich glaube Dein Problem verstanden zu haben
Hier mal ein Ansatz
https://www.herber.de/bbs/user/91890.xlsm
Nun brauchst Du nur noch mit dem Rekorder das AutoFillScript aufzuzeichnen und anzupassen
Gruß Matthias

Anzeige
AW: letzte Zeile ermitteln und Formel eintragen
05.08.2014 07:49:46
Oberschlumpf
Hi Matthias
und wie werden mit deinem Code die jetzt noch leeren Zellen mit der richtigen Formel aufgefüllt?
Ciao
Thorsten

letzte Zeile ermitteln und Formel eintragen!
05.08.2014 08:29:28
Matthias
Hallo
Zitat:

und wie werden mit deinem Code die jetzt noch leeren Zellen mit der richtigen Formel aufgefüllt?
Sieh Dir doch noch mal den Text im Betreff an.
und ich hatte geschrieben:
Hier mal ein Ansatz
Nun brauchst Du nur noch mit dem Rekorder das AutoFillScript aufzuzeichnen und anzupassen

Ich hatte hier auf Eigenitiative von Florri gesetzt


aber egal:
bitte hier meine Variante
Option Explicit
Sub Florian2()
Dim LoLetzteCol&, x&, wert
For x = 1 To 27 Step 8
LoLetzteCol = Cells(Rows.Count, x).End(xlUp).Row
wert = Cells(LoLetzteCol, x)
Cells(LoLetzteCol, x + 1).FormulaR1C1 = "=(RC[-1]/" & wert & ")*100"
Cells(LoLetzteCol, x + 1).AutoFill Destination:=Range(Cells(LoLetzteCol, x + 1), Cells(2, x +  _
1)), Type:=xlFillDefault
Next
End Sub
Gruß Matthias

Anzeige
hier ne VBA-Lösung
05.08.2014 07:47:39
Oberschlumpf
Hi
OHNE Excel-Bsp-Datei findest du hier, gerade bei solchen Datenmengen, schlecht Freunde, respektive Lösungsideen.
hier mal meine Idee:
Sub sbFastUngetestet()
Dim lloCol As Long, lloRow As Long, lloLast As Long
Const lciChr = 64
For lloCol = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, lloCol).Value = "Zeit" Then
lloLast = Cells(Rows.Count, lloCol).End(xlUp).Row
Cells(lloLast, lloCol + 1).FormulaLocal = "=(" & Chr(lciChr + lloCol) & _
lloLast & "/" & Cells(lloLast, lloCol).Value & ")*100"
Cells(lloLast, lloCol + 1).AutoFill Destination:=Range(Chr(lciChr + lloCol + 1)  _
& _
"2:" & Chr(lciChr + lloCol + 1) & lloLast), Type:=xlFillDefault
End If
Next
End Sub

Hilfts?
Wenn nicht, dann zeig uns die Tabelle innerhalb von Excel.
Ciao
Thorsten

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 08:44:23
JoWE
Hallo Florian,
hier noch'n Ansatz:
Private Sub schneller()
Dim s As Long, z As Long, t As String
For s = 2 To 74 Step 8
z = Cells(s - 1, 1).End(xlDown).Row
t = Replace(Cells(z, 1).Address, "$", "")
Cells(z, s).Formula = "=" & t & "/880"
Cells(z, s).AutoFill Destination:= _
Range(Cells(2, s), Cells(z, s)), Type:=xlFillDefault
Next s
End Sub

Gruß
Jochen

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 12:12:18
Florri
Hallo zusammen,
erst mal vielen Dank an Alle, die sich über diese Sache Gedanken gemacht haben. Entschuldigt bitte, dass ich keine Beispiel-Datei hinzugefügt habe, aber diese Möglichkeit kam mir leider gar nicht in den Sinn.
Ganz besonderen Dank an Matthias und Thorsten. Die für mich perfekte Lösung war der Ansatz von Matthias. Gut, dass Du noch eine ausführlichere Lösung angeboten hast, weil auf meine Eigeninitiative kein Verlass war. Die ist zwar grundsätzlich vorhanden, allerdings aufgrund meiner mangelnden Kenntnisse weitgehend nutzlos. Wie gesagt, diese Lösung ist genau das, wonach ich gesucht habe.
@Thorsten: Auch dieser Ansatz hat super funktioniert, allerdings bricht das Makro in meiner Excel-Datei nach dem 4. Block ab, d.h. insgesamt werden 4 Spalten "% Zeit" mit den Formel aufgefüllt. Das entspricht dem Ausschnitt aus meinem Screenshot, wobei ich es nicht geschafft habe, das Makro so zu verändern, um die Range auf insgesamt 10 Blöcke zu erweitern.
@Jochen: Ebenfalls vielen Dank. Bei Deinem Ansatz verändert sich allerdings nicht die Zeile, bis wohin AutoFill durchgeführt werden. Sie blieb konstant, entsprechend der ersten Spalte.
Ich habe noch eine Excel-Datei als Beispiel hinzugefügt, falls noch jemand etwas testen möchte. Eigentlich ist mein Anliegen jedoch perfekt gelöst.
https://www.herber.de/bbs/user/91908.xlsx
Nochmals Vielen Dank an dieses Forum. Echt super! Evtl. bekommt es eine Widmung in meiner Dr. Arbeit.
Schönen Gruß,
Florian

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 12:28:11
JoWE
Ups, kleine Korrektur:
streichen: z = Cells(s - 1,1).End(xlDown).Row
setzen: z = Cells(1, s - 1).End(xlDown).Row
sorry,
Gruß
Jochen

AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 12:33:40
JoWE
und noch eine...
Private Sub schneller()
Dim s As Long, z As Long, t As String
For s = 2 To 74 Step 8
z = Cells(1, s - 1).End(xlDown).Row
t = Replace(Cells(z, s - 1).Address, "$", "")
Cells(z, s).Formula = "=" & t & "/880*100"
Cells(z, s).AutoFill Destination:= _
Range(Cells(2, s), Cells(z, s)), Type:=xlFillDefault
z = 0
Next s
End Sub

Gruß
Jochen

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 12:40:50
Florri
Lieber Jochen,
damit funktioniert es schon besser. Allerdings besteht immer noch ein Problem, welches ich in meiner ersten Antwort nicht erwähnte. Die absolute Zeit variiert ja, demnach darf die Zahl "880" in der Formel nicht fix sein, sondern muss sich an die letzte, unterste Zahl der "Zeit" anpassen. Der unterste Wert in der Spalte "% Zahl" muss also immer 1 bzw. 100 % betragen.
Schönen Gruß
Florian

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
05.08.2014 22:21:08
JoWE
hmm, also etwa so?
Private Sub schneller()
Dim s As Long, z As Long, t As String
For s = 2 To 74 Step 8
z = Cells(1, s - 1).End(xlDown).Row
t = Replace(Cells(z, s - 1).Address, "$", "")
Cells(z, s).Formula = "=" & t & "/" & Cells(z, s - 1) & "*100"
Cells(z, s).AutoFill Destination:= _
Range(Cells(2, s), Cells(z, s)), Type:=xlFillDefault
z = 0
Next s
End Sub

Gruß
Jochen

Anzeige
AW: letzte Zeile ermitteln, markieren und nutzen
06.08.2014 13:51:28
Florri
Lieber Jochen,
damit funktioniert es perfekt. Vielen herzlichen Dank auch an Dich. Es ist sehr interessant zu sehen, dass mehrere verschiedene Ansätze das gleiche richtige Ergebnis liefern. Ich wünschte, ich würde das besser verstehen. Wenn ich mal Zeit habe...
Schönen Gruß
Florian
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Letzte Zeile in Excel ermitteln und nutzen


Schritt-für-Schritt-Anleitung

  1. VBA Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Code einfügen: Füge den folgenden Code ein, um die letzte Zeile in einer bestimmten Spalte zu ermitteln und die Formel einzutragen:

    Sub LetzteZeileErmitteln()
        Dim LoLetzteZeile As Long
        LoLetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A
        Cells(LoLetzteZeile, 2).Formula = "=(" & Cells(LoLetzteZeile, 1).Address & "/880)*100" ' Formel in Spalte B
        Range(Cells(LoLetzteZeile, 2), Cells(2, 2)).FillDown ' Autofill
    End Sub
  4. Makro ausführen: Drücke F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: Runtime Error 1004 beim Autofill
    Lösung: Stelle sicher, dass die Zielzellen nicht leer sind. Überprüfe, ob die letzte Zeile tatsächlich Daten enthält.

  • Fehler: Formel wird nicht korrekt eingetragen
    Lösung: Überprüfe, ob die richtige Spalte angegeben ist. Stelle sicher, dass der Zellbezug korrekt ist.


Alternative Methoden

  • Excel-Formel für letzte Zeile: Wenn du keine VBA-Lösung verwenden möchtest, kannst du auch folgende Formel in einer Zelle verwenden, um die letzte Zeile mit Inhalt zu ermitteln:

    =VERGLEICH(9.99999999999999E+307;A:A)
  • Dynamische Bereiche: Erstelle eine dynamische Tabelle, um automatisch die letzten Zeilen zu erkennen und zu nutzen.


Praktische Beispiele

  • VBA zur Auswahl der letzten Zeile:

    Sub LetzteZeileAuswaehlen()
        Dim LoLetzteZeile As Long
        LoLetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
        Range("A1:A" & LoLetzteZeile).Select ' Auswahl bis zur letzten Zeile
    End Sub
  • Formel für die letzte Zeile mit Wert:

    =INDEX(A:A;MAX(WENN(A:A<>"";ZEILE(A:A))) )

Tipps für Profis

  • Nutzung von With: Verwende den With-Befehl, um den Code lesbarer zu machen:

    With Cells(Rows.Count, 1)
        LoLetzteZeile = .End(xlUp).Row
        .Offset(0, 1).Formula = "=(" & .Address & "/880)*100"
    End With
  • Automatisierung mit Schleifen: Wenn du mehrere Spalten bearbeiten möchtest, implementiere Schleifen, um die Effizienz zu erhöhen.


FAQ: Häufige Fragen

1. Wie finde ich die letzte beschriebene Zeile in einer anderen Spalte?
Du kannst die End(xlUp) Methode für die entsprechende Spalte verwenden, z.B. Cells(Rows.Count, 2).End(xlUp).Row für die Spalte B.

2. Wie kann ich den letzten Wert einer Zeile ermitteln?
Verwende die Formel =INDEX(A1:Z1;MAX(WENN(A1:Z1<>"";SPALTE(A1:Z1)))), um die letzte gefüllte Zelle in der ersten Zeile zu finden.

3. Was ist der Unterschied zwischen Range und Cells in VBA?
Range wird verwendet, um einen spezifischen Zellbereich zu definieren, während Cells verwendet wird, um auf Zellen durch ihre Zeilen- und Spaltennummer zuzugreifen.

4. Wie kann ich alle Zellen bis zur letzten Zeile markieren?
Verwende den Code Range("A1:A" & LoLetzteZeile).Select, um alle Zellen bis zur letzten Zeile in Spalte A zu markieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige