Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1660to1664
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

Zellinhalt aufteilen

Zellinhalt aufteilen
07.12.2018 12:25:55
erichm
Hallo,
ich importiere aus einem Ordner in eine EXCEL-Tabelle, Spalte A, ab Zeile 2 die Dateinamen vieler .csv-Dateien.
Diese Dateinamen sind grundsätzlich nach einer bestimmten Struktur benannt:
Teil 1: verschiedene Zeichen mit unterschiedlicher Länge
Teil 2: nach Teil 1 bis zur nächsten „Leerstelle“ in der Zelle
Teil 3: Zeilenanzahl (Zahlen sind immer vor .csv)
Mein Ziel:
Den Teilbereich „Teil 2“ in einer eigenen Spalte (Spalte E) ausgliedern.
Problem:
Im Laufe der Zeit wurde Teil 1 immer „unterschiedlicher benannt“. Deswegen ist es jetzt sehr schwer, diesen Teil 2 separat zu ermitteln. Derzeit habe ich dies mit einer Vielzahl von Hilfsspalten weitgehend grundsätzlich gelöst. Da dies aber erfordert, dass bei einer Aktualisierung der Spalte A die Formeln in Spalte E wieder manuell angepasst werden müssen, ist das nicht mehr praktikabel. Es müsste aber doch möglich sein, den Teil 2 zu finden, da der Teil 1 ja genau definiert werden kann.
In der Anlage meine Mustertabelle.
Tabelle Beginn: In Spalte A sind alle Varianten von Teil 1 aufgelistet. In Spalte B habe ich ermittelt wie viele Zeichen dies jeweils sind.
Tabelle Muster: In Spalte A sind verschiedene importierte .csv-Dateinamen aufgelistet (nicht alle Varianten Teil 1 betreffend). Ab Spalte B sind meine verschiedenen Hilfsspalten, wobei die Spalte E der gesuchte Bereich ist. Dort ist erkennbar, wie ich die Formel derzeit immer wieder anpassen muss.
https://www.herber.de/bbs/user/125955.xlsx
Frage: Wie könnte ich Teil 1 aus der Zelle abschneiden, wenn er den jeweiligen Kriterien aus Spalte A der Tabelle Muster entspricht. Nach dieser Kürzung finde ich den Rest mit Hilfe der „Leerstelle“, siehe Formel in Spalte I.
Vielen Dank für eine Hilfe.
mfg

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

Betreff
Datum
Anwender
Anzeige
VBA oder Formellösung?
07.12.2018 13:11:42
UweD
AW: VBA oder Formellösung?
07.12.2018 13:41:55
erichm
Hallo,
danke für die Rückfrage, ich bin da für beide Varianten völlig offen.
mfg
AW: VBA oder Formellösung?
07.12.2018 14:15:25
UweD
Hallo
per vba evtl. so.
Achtung:
  • ich habe Blatt "Beginn" nach Länge absteigend sortiert.
  • Dadurch werden zuerst die längsten Übereinstimmungen geprüft und gelöscht.
  • Außerdem die X durch ein ? ersetzt.
    (Ein ? ist ein Joker für genau ein Zeichen / ein * für beliebig Viele)
    
    Sub Teil1()
        Dim i As Integer, j As Integer, LR1 As Integer, LR2 As Integer
        Dim TB1, TB2, Beginn As String, Abfrage As String, Ziel As Integer
        
        Set TB1 = Sheets("Muster")
        Set TB2 = Sheets("Beginn")
        Ziel = 5 'Zielspalte E 
        
        LR1 = TB1.Cells(TB1.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte 
        LR2 = TB2.Cells(TB2.Rows.Count, 1).End(xlUp).Row
        
        TB1.Columns(Ziel).ClearContents
        For i = 2 To LR2
            Beginn = TB2.Cells(i, 1)
            
            For j = 2 To LR1
                Abfrage = TB1.Cells(j, 1)
                
                If Abfrage Like Beginn & "*" And TB1.Cells(j, Ziel) = "" Then
                    TB1.Cells(j, Ziel) = Replace(Mid(Abfrage, Len(Beginn) + 1), ".csv", "")
                End If
            Next
        
        Next i
    End Sub
    

    Ergibt dann folgende Werte (hier in E dargestellt)

    Muster
     DE
    1kurzper VBA
    21371_1652 88978521371_1652 8897852
    301R02Ru03A04R_35A36A37R38A 259322701R02Ru03A04R_35A36A37R38A 2593227
    4K65 3761557K65 3761557
    5M67 5283183M67 5283183
    6G75 6972611G75 6972611
    7M6 3290245M6 3290245
    8G8 3751242G8 3751242
    94914120 ACC 108261484914120 ACC 10826148
    10552150 ACC 8325491552150 ACC 8325491
    1150154564 ACC 378143550154564 ACC 3781435
    12505151920 ACC 8917679505151920 ACC 8917679
    1302Au05A_02A08Au02A19A 180536202Au05A_02A08Au02A19A 1805362
    1402Au08A_02A08Au02A19A 212550602Au08A_02A08Au02A19A 2125506
    1502Au19A_02A08Au02A19A_14Au17A_08A14A17A 147383012_02Au19A_02A08Au02A19A_14Au17A_08A14A17A 1473830
    1614Au17A_08A14A17A_02Au19A_02A08Au02A19A 147383012_14Au17A_08A14A17A_02Au19A_02A08Au02A19A 1473830
    1702Au05A_02A08Au02A19A_08Au14A_08A14A17A 86792602Au05A_02A08Au02A19A_08Au14A_08A14A17A 867926
    1802Au08A_02A08Au02A19A_05Au19A_02A08Au02A19A 180536202Au08A_02A08Au02A19A_05Au19A_02A08Au02A19A 1805362
    1901A02Au02A08A 216827001A02Au02A08A 2168270
    2001A03Ru02A03R 163979101A03Ru02A03R 1639791
    2101A02A03R04A 140245201A02A03R04A 1402452
    2201A02R03A04R 173919101A02R03A04R 1739191
    2303A32A38A ACC 312105303A32A38A ACC 3121053
    2404A05R06A 149667904A05R06A 1496679
    2501Au02R 327088301Au02R 3270883
    2601Au03A 371558301Au03A 3715583
    2701m1b3REJ 719114601m1b3REJ 7191146
    2802m1b3ACC 648672302m1b3ACC 6486723
    2902Au05A_02A08Au02A19A_02Au19A_02A08Au02A19A 499853402Au05A_02A08Au02A19A_02Au19A_02A08Au02A19A 4998534
    3002Au05A_02A08Au02A19A_08Au14A_08A14A17A 589604002Au05A_02A08Au02A19A_08Au14A_08A14A17A 5896040
    3101Au36A_02Au27A 596800001Au36A_02Au27A 5968000
    3201R02Ru03A04R_35A36A37R38A 249180301R02Ru03A04R_35A36A37R38A 2491803
    331311_01Au02R_04R19R22A 77042921311_01Au02R_04R19R22A 7704292
    3416Au17A_12A20A24A_03A29Au31A32A 655892816Au17A_12A20A24A_03A29Au31A32A 6558928
    35LL04u05u06 682439904u05u06 6824399
    36LL04u05u06 REJ 715941704u05u06 REJ 7159417
    3710Au25A_14Au18R_22Au25A 69046910Au25A_14Au18R_22Au25A 690469
    3812A16A20A_B097BM95_D164K3 24831612A16A20A_B097BM95_D164K3 248316
    39116_5v5_1112562_10134131_N05bK16_N06bM37_B103AK99 27377261112562_10134131_N05bK16_N06bM37_B103AK99 2737726
    40117_1v5_1371_505151931_01Au36A_04u25u27ACC_21u22u23ACC 125551371_505151931_01Au36A_04u25u27ACC_21u22u23ACC 12555777

    verwendete Formeln
    Zelle Formel Bereich N/A
    D2=TEIL(B2;BB2;50)  
    D3: D40=TEIL(B3;BB3;60)  
    http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
    http://Hajo-Excel.de/tools.htm
    XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
    Add-In-Version 25.14 einschl. 64 Bit


    Bei den markierten Zellen ist eine Abweichung.
    Ursache z.B. für die letzte Zeile:
    Es gibt einen Beginn App?_?v? den ersetzte ich.
    Hier fehlt meiner Meinung nach noch das _ am Ende
    du nimmst aber App_ und die Ziffern bleiben stehen


    das selbe mit M_2v3_LL (du nimmst M_2v3_)
    Da solltest du nochmal drüber nachdenken.
    LG UweD
  • Anzeige
    AW: VBA oder Formellösung?
    07.12.2018 16:27:07
    erichm
    DANKE - noch eine Verständnisfrage: die Formeln in Spalte D beziehen sich jetzt auf Spalte BB (bisher BA). Muss ich noch etwas verändern?
    Das Ergebnis sieht aber sehr gut aus; die beiden Punkte muss ich noch analysieren. Melde mich da auf alle Fälle nochmals.
    mfg
    AW: VBA oder Formellösung?
    08.12.2018 07:02:39
    Hajo_Zi
    warum offen, soll jemand Vorbei kommen?

    Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
    Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
    AW: VBA oder Formellösung?
    08.12.2018 14:18:51
    Gerd
    Hallo Hajo,
    lass es doch den Fragesteller entscheiden.
    Gruß Gerd
    AW: VBA oder Formellösung?
    08.12.2018 14:32:53
    Hajo_Zi
    AW: VBA oder Formellösung?
    10.12.2018 13:32:17
    UweD
    Hallo
    Ich hatte zum besseren Vergleichen eine Spalte hinder D eingefügt. Dadurch wurde die Formel verschoben.
    Du kannst die Variable "Ziel=5" in deiner Ursprungsdatei in 4 ändern.
    LG UweD
    Anzeige
    AW: VBA oder Formellösung?
    10.12.2018 16:53:17
    erichm
    Hallo UweD,
    danke nochmals für die Rückmeldung. Konnte das zwischenzeitlich lösen, incl. der beiden offenen Punkte.
    Diese Lösung per VBA ist genial und superschnell!!
    DANKE!
    mfg
    Danke für die Rückmeldung owT
    11.12.2018 08:07:17
    UweD

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige