Ich habe eine Tabelle mit einer Spalte, die eine Liste mit einem oder mehreren Datenbanknamen enthält. Leider dauert es lange, bis dieser Bericht geändert wird. Daher muss ich die Daten bearbeiten.
Die Spalte enthält alle Datenbanken, die für einen Datensatz spezifisch sind, in einer einzigen Zelle, getrennt durch Kommas. Ich muss diese Liste auseinandernehmen und jede Datenbank in eine separate Zelle setzen. Wichtiger Hinweis: Ich binnichtIn dieser Lösung ist die Verwendung von VBA-Makros/-Code zulässig.
Das erste ist einfach: Suchen Sie das erste Komma und setzen Sie alles links davon zurück. Bei den nächsten Punkten habe ich Probleme.
Ich habe eine Spalte erstellt, die zählt, wie viele Kommas sich in der Zelle befinden, sodass ich feststellen kann, ob mehrere Datenbanken aufgelistet sind.
Wie kann ich die nächsten angehen?
Antwort1
Dies ist keine Antwort auf eine Arbeitsblattfunktion, verwendet aber auch kein VBA.
Haben Sie versucht, die Funktion „Text in Spalten“ zu verwenden? In Excel 2010 ist dies eine der Schaltflächen im Menüband „Daten“.
- Wählen Sie Ihre Spalte aus.
- Klicken Sie auf die Schaltfläche „Text in Spalten“.
- Wählen Sie auf der ersten Seite des Assistenten „Getrennt“ und dann „Weiter“.
- Aktivieren Sie auf der zweiten Seite „Komma“, um es als Trennzeichen auszuwählen. Abhängig vom Format Ihrer Daten möchten Sie möglicherweise einige der anderen Zeichen aktivieren/deaktivieren.
- Sie können an dieser Stelle wahrscheinlich auf „Fertig stellen“ klicken, um Ihre Daten in Spalten aufzuteilen. Um die Spaltenformate zu ändern, möchten Sie möglicherweise aber auf die nächste Seite wechseln.
Antwort2
Mit Beispieldaten inA1, InB1eingeben:
=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
und rüber kopieren:
BEARBEITEN #1:
Wenn wir mit Material in Spalten beginnenAUndBso was:
und führen Sie dieses kurze Makro aus:
Sub dural()
Dim N As Long, i As Long, K As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
K = 1
For i = 2 To N
v = Cells(i, "A").Value
ary = Split(Cells(i, "B").Value, ",")
For Each a In ary
Cells(K, "C").Value = v
Cells(K, "D").Value = a
K = K + 1
Next a
Next i
End Sub
Wir werden am Ende Folgendes erhalten: