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

Wenn Inhalt

Forumthread: Wenn Inhalt

Wenn Inhalt
03.02.2017 11:20:51
Henry
Moin,
ich habe leider eine Ausgabe in der alle Daten in einer Spalte sind und muss diese trennen (30000 Zeilen).
Mall und Meno sollen in Spalte A und daneben Meyer1234567 etc soll dann in Spalte B
Das ist auch immer so, dass der Wert für Spalte A immer der obere ist.
Wenn Zelle B1 ?####### dann nächster oben stehender Wert
der nicht wie ?####### ist in Spalte A daneben...
Mall
Meye1234567
Meye1234566
Meye1234577
Meno
Schu1234567
Schu1234577
Schu1234588
Beispieldatei: https://www.herber.de/bbs/user/111136.xlsb
Geht das per VBA kann jemand helfen ?
Gruss
Henry
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Inhalt
03.02.2017 11:52:26
ransi
Hallo Henry,
Wie soll Excel denn erkennen ob der Wert nun ein neuer eintrag in Spalte A ist oder ob das ein ganz normaler Wertfür Spalte B ist?
ransi
AW: Wenn Inhalt
03.02.2017 12:12:27
Henry
Hallo Ransi,
mit VBA müsste es doch gehen ?
AW: Wenn Inhalt
03.02.2017 12:14:20
ransi
Hallo,
Sicher geht das.
Aber man braucht eine Unterscheidungsmerkmal was in Spalte A und was in Spalte B gehört.
Oder hast du nur die 2 Begriffe für die Spalte A?
ransi
Anzeige
AW: Wenn Inhalt
03.02.2017 12:21:49
Henry
Hallo Ransi,
der Wert Spalte B hat immer das Format 4 Buchstaben + 7 Zahlen
Der Wert für Spalte A ist immer der nächste obere Wert der nicht dieses Format hat.
Gruss
Henry
AW: Wenn Inhalt
03.02.2017 13:09:25
ransi
Hallo Henry,
Teste mal an einer Kopie deiner Daten:
Option Explicit
Option Compare Text

Sub machs()
    Dim arrIn As Variant
    Dim arrOut As Variant
    Dim L As Long
    Dim K As Long
    Dim SpalteA As String
    Dim Muster As String
    Muster = "[A-ZÄÖÜ][A-ZÄÖÜ][A-ZÄÖÜ][A-ZÄÖÜ]#######"
    arrIn = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
    Redim arrOut(1 To UBound(arrIn), 1 To 2)
    For L = 1 To UBound(arrIn)
        K = K + 1
        If arrIn(L, 1) Like Muster Then
            arrOut(K, 1) = SpalteA
            arrOut(K, 2) = arrIn(L, 1)
            Else:
            SpalteA = arrIn(L, 1)
            arrOut(K, 1) = SpalteA
            arrOut(K, 2) = arrIn(L + 1, 1)
            L = L + 1
        End If
    Next
    Range("B1").Resize(UBound(arrOut), 2) = arrOut
End Sub



ransi
Anzeige
;

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