Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
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

Spalte durchsuchen und in andere Spalte x setzen

Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 15:24:12
Dieter
Hallo
ich hoffe ihr könnt mir bei meinem Problem helfen.
Problemstellung:
Ich habe eine Excel Liste, diese enthält eine Spalte die komplett durchsucht werden soll.
Die jeweiligen Zellen enthalten mehrere String der Form "XX123456789" die Strings innerhalb der Zelle sind durch ein ; getrennt.
Nun gibt es eine beliebige Anzahl von Zellen die alle nach dem Schema wie oben gefüllt sind, manche haben mehr manche weniger Einträge.
Die XX am Anfang der Strings sind mehrere verschiedene wiederkehrende Kombinationen.
Es sollen für jede Kombination der XX'e eine eigene Spalte angehängt werden (wird manuell davor erledigt).
Nun soll die gesamte Spalte angefangen bei der 1. Zelle durchgegangen werden und stoppen wenn er auf die Zelle stößt wo keinen Eintrag mehr enthält.
Innerhalb einer Zelle soll das Makro nun erkennen um welches XX es sich handelt und in der jeweilig passenden angefügten Spalte eine "x" machen.
Wenn es nun auf ein ; trifft soll es zum nächsten String der Zelle springen oder wenn nach dem ; kein String mehr kommt in die darunter liegende Zelle springen.
Dadurch soll eine besser Übersicht entstehen welche Kombinationen alle in einer Zelle vorkommen.
Es wäre super wenn mir jemand sagen/zeigen könnte wie man das am besten realisiert.
Viele Grüße und Danke schon mal

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 17:10:09
Hendryk
Hallo Dieter,
keine Ahnung, ob ich dein Problem richtig verstanden habe. Führe mal die Sub Splitte aus.
Beim Coding hab ich mir aus oben genannten Grund nicht sonderlich viel Mühe gegeben, das kann ich normalerweise besser!
https://www.herber.de/bbs/user/89891.xlsm
Viele Grüße
Hendryk

AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 20:15:26
Dieter
Hallo Hendryk,
super das war genau das was ich machen möchte.
Solang es funktioniert ist es gut ich passe es morgen an mein Problem an und wenn ich noch Probleme habe melde ich mich.
Vielen Dank für deine Hilfe!

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 20:22:04
Dieter
Ich hab noch eine Frage an dich und zwar werden die Spaltenköpfe von deinem Makro erzeugt oder hast du die vorher angelegt?
Viele Grüße
Dieter

AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 20:46:47
Dieter
Ich habe hier eine Musterliste hochgeladen:
https://www.herber.de/bbs/user/89898.xlsx
So sieht meine Ausgangslage aus die Spaltenköpfe in welche Spalten ein x gesetzt wird sind also schon vorgegeben.
Das Makro muss nur durch die Spalte gehen und dann das x in die passenden Stellen schreiben, im Prinzip ist es so wie du es hast nur das eben die Spalten schon vorgegeben sind.
Ehrlich gesagt verstehe ich deinen Code nicht zu 100% deswegen hab ich dir mal eine Musterliste geschrieben damit dir klarer wird wie das aussehen soll, vielleicht könntest du auf dieser Basis nochmal Code schreiben?
Liebe Grüße Dieter

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 21:16:12
Hendryk
Hallo Dieter,
die Spaltenköpfe werden erzeugt. Wenn es das ist was du brauchst kann ich gerne den Code kommentieren bzw. verständlicher schreiben. Deine Datei schaue ich mir morgen an.
Viele Grüße
Hendryk

AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 21:25:56
Dieter
Also bei meiner Tabelle sind die Spaltenköpfe schon gegeben.
Sonst soll die Funktion genau so wie bei dir sein.
Weisst du wie man deinen Code dementsprechend anpassen kann es soll die gleichen Features enthalten nur eben keine neuen Spaltenköpfe erstellen sondern diese sind schon gegeben?
Liebe Grüße

AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 21:36:57
Hendryk
Hallo Dieter,
das ist kein Problem, leider hab ich zuhause kein Excel installiert.
Im Code gibt es eine Schleife über das Array welches alle Elemente (XX123456789) enthält.
In dieser Schleife werden die 2 führenden Zeichen in ein 2 Array geschrieben und zwar nur wenn es noch nicht vorhanden ist. Dies erledigt die Function IsInArray.
An irgend einer Stelle im Code wird das 2 Array (MyArrayHeader, glaub so hab ich es benannt) auf das Excel Template übertragen - diesen Schritt müsstest du meiner Meinung nach auskommentieren.
Der Rest sollte dann wieder funktionieren.
Viele Grüße
Hendryk

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 21:52:21
Dieter
Also wenn ich das bei dir auskommentiere klappt das so wie ich es mir vorstelle.
Kopiere ich den Code bei mir rein bekomme ich den Fehler: Laufzeitfehler 9: Index außerhalb des gültigen Bereichs
Ich habe irgendwo gelesen das ReDim Preserve ab und zu Probleme machen kann, kann das vielleicht der Grund sein das es bei mir nicht geht?
Wie kann man noch implementieren?
Liebe Grüße

AW: Spalte durchsuchen und in andere Spalte x setzen
27.03.2014 22:04:55
Dieter
Ich habe die Fehlerquelle gefunden bei dir gibt es nur Zellen die so aussehen XX12345; XZ12345
Aber bei mir sehen die Zellen so aus XX12345 1111 2222; XZ12345 1111 2222
und wenn ich deine Zellen auch so verändere kommt da auch der Laufzeitfehler.
Wie kann ich das anpassen damit das Makro auch mit meiner Formatierung funktioniert?

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 09:35:55
Dieter
Ich hab jetzt noch ein weiteres Problem gefunden.
In meiner Tabelle kann es vorkommen das in einer Zelle ein Kürzel (also die ersten beiden Werte) vorkommt, das nicht im Spaltenkopf steht da es nicht relevant genug ist.
Diese Kombinationen sollen ausgeschlossen werden also wenn dafür kein Spaltenkopf angelegt ist soll dafür auch kein x gesetzt werden das klappt so noch nicht.
Schon mal vielen Dank für deine Mühe.

AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 09:52:20
Hendryk
Hallo Dieter,
aufsetzend auf deine Beispiel-Datei habe ich folgenden verkürzten/kommentierten Code geschrieben.
Probiers mal aus! Die Probleme bekommen wir auch noch gelöst!
Private Sub Set_X()
Dim i As Long, j As Byte, a As Long
Dim vX As Variant
Dim sSuche As String
'\\ Startvariable für Schleife über alle Zeilen
i = 2
'\\Schleife für Zeilen
Do Until Cells(i, 3) = ""
'\\aktuellen Zellinhalt splitten und in ein Array schieben
vX = Split(Cells(i, 3), ";")
'\\ Schleife über Arrayinhalt
For a = LBound(vX) To UBound(vX)
'\\Leerzeichen rausnehmen
sSuche = Trim(vX(a))
'\\ Buchstaben separieren
sSuche = Left(sSuche, 2)
Debug.Print sSuche
'\\Schleife über Kopfzeile und 'x' setzen
'\\ Start: Spalte 7
'\\ Ende: Spalte 10 ggf. anpassen
For j = 7 To 10
If sSuche = Cells(1, j) Then
Cells(i, j) = "x"
Exit For
End If
Next j
Next
i = i + 1
Loop
End Sub

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 10:13:40
Dieter
Hallo,
soweit klappt das schon super jetzt habe ich noch ein Problem festgestellt, in meiner Liste sind anscheinend Zeilenumbrüche zwischen den einzelnen Strings, das wird von deinem Makro nicht abgedeckt.
Wie kann ich das implementieren, da ich die Zeilenumbrüche nicht löschen darf.
Außerdem wollte ich noch Fragen wenn ich in Zukunft doch die Spaltenköpfe automatisch generieren möchte wie kann ich das in den Code einbauen den du mir geschickt hast?
Übringens super verständlicher Code danke! ;-)

AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 10:24:59
Hendryk
Hallo Dieter,
das Problem mit den Zeilenumbrüchen ist schnell gelöst, siehe hier:
Private Sub Set_X()
Dim i As Long, j As Byte, a As Long
Dim vX As Variant
Dim sSuche As String
Dim stmp As String
'\\ Startvariable für Schleife über alle Zeilen
i = 2
'\\Schleife für Zeilen
Do Until Cells(i, 3) = ""
'\\Zeilenumbrüche entfernen
stmp = Replace(Cells(i, 3), vbLf, " ", 1, -1, 1)
'\\aktuellen Zellinhalt splitten und in ein Array schieben
vX = Split(stmp, ";")
'\\ Schleife über Arrayinhalt
For a = LBound(vX) To UBound(vX)
'\\Leerzeichen rausnehmen
sSuche = Trim(vX(a))
'\\ Buchstaben separieren
sSuche = Left(sSuche, 2)
Debug.Print sSuche
'\\Schleife über Kopfzeile und 'x' setzen
'\\ Start: Spalte 7
'\\ Ende: Spalte 10 ggf. anpassen
For j = 7 To 10
If sSuche = Cells(1, j) Then
Cells(i, j) = "x"
Exit For
End If
Next j
Next
i = i + 1
Loop
End Sub
Die dynamische Kopfzeile mache ich gleich, muss jetzt nur in ein Meeting!
VG
Hendryk

Anzeige
AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 10:29:58
Dieter
Ok vielen Dank.
Mit dem Code für die Zeilenumbrüche setzt das Makro nun keine x'e mehr in der Liste.

AW: Spalte durchsuchen und in andere Spalte x setzen
28.03.2014 10:32:21
Dieter
Mein Fehler habe vergessen was anzupassen.
Klappt alles wunderbar vielen Dank!
Ja so dringend ist dynmaische Kopfzeile nicht hab es dann nur gern in der Hinterhand wenn dann doch jemand was geändert haben möchte. ;-)

AW: Spalte durchsuchen und in andere Spalte x setzen
01.04.2014 10:05:47
Dieter
Hallo,
kannst du mir bitte noch sagen wie das mit dem dynamischen Spaltenkopf funktioniert?
VG Dieter

AW: Spalte durchsuchen und in andere Spalte x setzen
01.04.2014 10:06:10
Dieter
wsakac7k

AW: Spalte durchsuchen und in andere Spalte x setzen
01.04.2014 10:08:54
Dieter
Hallo,
kannst du mir bitte noch sagen wie das mit dem dynamischen Spaltenkopf funktioniert?
VG Dieter
Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige