letzte Zeile ermitteln, markieren und nutzen
 |
Betrifft: letzte Zeile ermitteln, markieren und nutzen
von: Florri
Geschrieben am: 05.08.2014 00:31:55
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.

Ich danke Euch schon mal im Voraus für Eure Bemühungen und gebe auf jeden Fall Rückmeldung.
Schönen Gruß
Florian
 |
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: TOM
Geschrieben am: 05.08.2014 06:59:28
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
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: Hajo_Zi
Geschrieben am: 05.08.2014 07:04:20
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
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.

Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: Spenski
Geschrieben am: 05.08.2014 07:25:19
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
Betrifft: letzte Zeile ermitteln und Formel eintragen
von: Matthias L
Geschrieben am: 05.08.2014 07:40:38
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
Betrifft: AW: letzte Zeile ermitteln und Formel eintragen
von: Oberschlumpf
Geschrieben am: 05.08.2014 07:49:46
Hi Matthias
und wie werden mit deinem Code die jetzt noch leeren Zellen mit der richtigen Formel aufgefüllt?
Ciao
Thorsten
Betrifft: letzte Zeile ermitteln und Formel eintragen!
von: Matthias L
Geschrieben am: 05.08.2014 08:29:28
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
Betrifft: hier ne VBA-Lösung
von: Oberschlumpf
Geschrieben am: 05.08.2014 07:47:39
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
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: JoWE
Geschrieben am: 05.08.2014 08:44:23
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
 |
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: Florri
Geschrieben am: 05.08.2014 12:12:18
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
 |
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: JoWE
Geschrieben am: 05.08.2014 12:28:11
Ups, kleine Korrektur:
streichen: z = Cells(s - 1,1).End(xlDown).Row
setzen: z = Cells(1, s - 1).End(xlDown).Row
sorry,
Gruß
Jochen
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: JoWE
Geschrieben am: 05.08.2014 12:33:40
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
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: Florri
Geschrieben am: 05.08.2014 12:40:50
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
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: JoWE
Geschrieben am: 05.08.2014 22:21:08
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
Betrifft: AW: letzte Zeile ermitteln, markieren und nutzen
von: Florri
Geschrieben am: 06.08.2014 13:51:28
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
Beiträge aus den Excel-Beispielen zum Thema "letzte Zeile ermitteln, markieren und nutzen"