Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Letzte Zeile mit bestimmtem Wert finden

Letzte Zeile mit bestimmtem Wert finden
29.12.2022 13:51:08
Thomas
Hallo,
ich habe in einer Tabelle in Spalte 2 Ab Zeile 6 bis zur lngLastRow in 4 Schritten Werte stehen die Sortiert sind und sich in unterschiedlicher häufigkeit Wiederholen.
Ich würde gerne die Zeile ermitteln wo die jeweiligen Werte das letzte mal Vorkommen um dann darunter einen Zeilen Umbruch einzufügen, nur leider fehlt mir die idee wie ich das anstellen kann.
Dazu kommt noch da die Bereiche auch unterschiedlich groß sein können und sich ggf. über mehrere Bereiche erstrecken, das grundsätzlich alle 41 Zeilen ein Umbruch erfolgen muss, damit alles auf eine Seite passt
Anbei eine Beispielmappe, in dieser müsste ein Zeilenbruch nach Zeile 18,26 und 30 erfolgen.
Danke
MFG
Thomas
https://www.herber.de/bbs/user/156996.xlsx

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gemäß den Daten Deiner Beispieldatei ...
29.12.2022 14:02:51
neopa
Hallo Thomas,
... hätte ich im Gegensatz zu Deinen Angaben allerdings angenommen, dass die Daten B6:B21 und B22:B29 und die ab B30 zusammengehören. Oder doch anders? Wie begründet sich das dann?
Gruß Werner
.. , - ...
AW: gemäß den Daten Deiner Beispieldatei ...
29.12.2022 14:17:49
Thomas
Hallo Werner,
die Daten dazwischen gehören zu der jeweiligen Stadt im Beispiel.
Du hast recht meine Angabe oben ist falsch, richtig wäre der Umbruch müsste nach 21,29 und in dem Beispiel 30 kommen
AW: nun, formelmäßig ermitteln ...
29.12.2022 14:30:50
neopa
Hallo Thomas,
... nachfolgende Formeln in einer Hilfsspalte, hier C; davon Formel C6 ziehend nach unten kopieren:
Arbeitsblatt mit dem Namen 'Tabelle1'
 BC
5 9
6Köln21
7s29
8d33
9g 
10Köln 
11s 
12d 
13g 
14Köln 
15s 
16d 
17g 
18Köln 
19s 
20d 
21g 
22München 
23s 
24d 
25g 
26München 
27s 
28d 
29g 
30Berlin 
31s 
32d 
33g 
34  

ZelleFormel
C5=ZEILE(B6)+3
C6=WENNFEHLER(VERWEIS(9;1/(B$6:B94=INDEX(B:B;C5+1));ZEILE(B$9:B98))/(INDEX(B:B;C5+1)>"");"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
AW: nun, formelmäßig ermitteln ...
29.12.2022 15:02:29
Thomas
Hallo Werner,
vielen Dank dafür, da muss ich erstmal die Formel verstehen und dann wie ich das in VBA umsetze, damit dann die Zeilenumbrüche dynamisch gesetzt werden....
AW: VBA Lösung gesucht owT
29.12.2022 15:12:50
neopa
Gruß Werner
.. , - ...
AW: nun, formelmäßig ermitteln ...
29.12.2022 16:51:57
Yal
Hallo Thomas,
denken wir mal kurz wie ein Computer: ich kann zwar als Mensch die Unterschied zwischen s,d,g und köln machen und verstehen, dass Köln anders zu behandeln als s, d, oder g. Aber wie kommt der Computer drauf, dass er nicht den letzten s, letzten d und/oder letzten g ein leere Zeile einfügen muss?
Anders gefragt: welche Muster gibt es, den man einer stupiden Rechenmaschine übergeben kann, die deutsche Stadten nicht erkennt?
_ gibt es nach dem letzten vorkommen der Stadtname immer 3 Einträge, die dazu gehören?
_ haben die Einträge, die dazu gehören, immer nur eine Buchstabe?
_ sind diese Einträge bekannt und auflistbar?
usw.
VG
Yal
Anzeige
AW: nun, formelmäßig ermitteln ...
30.12.2022 08:34:20
Thomas
Hallo Yal,
  • _ gibt es nach dem letzten vorkommen der Stadtname immer 3 Einträge, die dazu gehören?
    _ haben die Einträge, die dazu gehören, immer nur eine Buchstabe?
    _ sind diese Einträge bekannt und auflistbar?

  • zu 1. Ja es sind danach immer 3 Einträge, hatte überlegt die in einer For Schleife zu durchlaufen mit Step 4, so das immer nur die Zelle mit der Stadt geprüft würde und wenn der Wert dann anders wie bei der letzten prüfung ist, müsste der Zeilen umbruch eingefügt werden.
    Zu 2. Nein die 3 Einträge können unterschiedlich lang sein
    Zu 3. Nein
    Danke
    MFG
    Thomas
    Anzeige
    AW: nun, formelmäßig ermitteln ...
    02.01.2023 22:58:20
    Yal
    Hallo Thomas,
    also das heisst:
    _ man ermittelt die letzte Zelle in Spalte 2
    _ von dieser Zelle aber 4 Zeilen nach oben mit einem Schritt von 4 Zeilen (negativ, weil nach oben)
    _ prüft man, ob die Wert dieser Zeile irgendwo darunter vorhanden ist (bezieht sich alles auf Spalte B)
    _ Wenn nicht, wird eine Zeile danach eingeführt.
    
    Sub LeereZeilen_einführen()
    Dim LetzteZelle As Range
    Dim R As Long 'R wie Row
    With Worksheets("Tabelle1") 'Name anpassen
    Set LetzteZelle = .Cells(.Rows.Count, 2).End(xlUp)
    For R = LetzteZelle.Row - 3 To 6 Step -4
    If .Cells(R, 2)  "" Then If WorksheetFunction.CountIf(Range(.Cells(R + 1, 2), LetzteZelle), .Cells(R, 2).Value) = 0 Then .Rows(R + 1).Insert
    Next
    End With
    End Sub
    
    Man arbeitet mit Zeilennummer anstatt, Zellenobjekt, weil diese bleiben, von der Zeileneinführung unverändert.
    Bei Zeilen oder Spalten hinzufügen oder löschen arbeitet man Rückwärt, genauso wie der Boden immer rückwärts zur Tür gewischt wird.
    VG
    Yal
    Anzeige
    AW: gemäß den Daten Deiner Beispieldatei ...
    29.12.2022 16:49:23
    Daniel
    Hi
    probier mal das:
    
    Sub test()
    Dim Zelle As Range
    ActiveSheet.ResetAllPageBreaks
    Set Zelle = Range("B6")
    Do
    Set Zelle = Zelle.EntireColumn.Find( _
    what:=Zelle.Value, _
    lookat:=xlWhole, _
    searchdirection:=xlPrevious)
    If Zelle.Offset(1, 0).Value = "" Then
    ActiveSheet.HPageBreaks.Add before:=Zelle.Offset(1, 0)
    Exit Do
    End If
    Set Zelle = Zelle.Offset(4, 0)
    ActiveSheet.HPageBreaks.Add before:=Zelle
    Loop
    End Sub
    
    Gruß Daniel
    AW: gemäß den Daten Deiner Beispieldatei ...
    30.12.2022 10:28:04
    Thomas
    Hallo Daniel,
    vielen Dank dafür, das scheint schon der richtige weg zu sein, hab das mal ein bisschen für mich angepasst, aber son ganz richtig sind die Umbrüche noch nicht, da teilweise dann fast leere Seiten generiert werden....
    Ich hatte ja eingangs geschriben das es alle 40 Zeilen immer einen Umbruch geben sollte, nach ein bisschen testen ist es jetzt so das alle 48 Zeilen ein Umbruch sein soll, da das immer auf eine Seite passt.
    Ich habe deinen Code dann jetzt so abgewandelt, aber wie gesagt er spuckt dann euch teilweise Seite mit nur 2 Zeilen aus, was unschön ist.
    
    Dim rngUmbruch As Range
    Set rngUmbruch = .Range("B6")
    .ResetAllPageBreaks 'Alle Seiten Umbrüch werden gelöscht
    For lngRow = 47 To lngLastRow - 59 Step 48
    .HPageBreaks.Add Before:=Range("B" & lngRow + 1)
    Next lngRow
    Do
    Set rngUmbruch = rngUmbruch.EntireColumn.Find(rngUmbruch.Value, , , xlWhole, , xlPrevious)
    If rngUmbruch.Offset(1, 0).Value = "" Then
    .HPageBreaks.Add Before:=rngUmbruch.Offset(2, 0)
    End If
    Set rngUmbruch = rngUmbruch.Offset(4, 0)
    If rngUmbruch.Row >= lngLastRow - 59 Then Exit Do
    Loop
    

    Anzeige

    314 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige