Clever-Excel-Forum

Normale Version: Zellinhalt miteinander verketten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
ich bin neu im Forum und hätte eine Frage bei der mir sicher jemand von euch helfen kann.
Ich möchte wie in der beiliegenden Tabelle dargestellt Zellen miteinander verketten, das Ergebnis
sollte dann so wie in den Spalten C und E aussehen.
Ideal wäre eine einzige Formel die ich nur nach unten ziehen kann.
In Spalte A befindet sich der Kodex der jeweiligen Mutterposition (zB 51.02.02.05), Spalte B wäre dann der Muttertext
bzw. der Kodex der dazugehörigen Tochterposition (zB 51.02.02.05.A), Spalte B wäre dann der Tochtertext.
Ich würde einfach die Mutter- und Tochtertexte miteinander verbinden, ich könnte das ja auch wie in der
beiliegenden Tabelle dargestellt mit verketten machen, leider müsste ich das dann aber mit ca. 12.000 Zeilen machen.

Ich bin für jede Hilfe dankbar
Formel kann ich dir keine anbieten, aber einen Code
Code:
Sub verbinden()
Dim i As Integer, Zeile As Integer
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
   If Len(Cells(i, 1)) = 11 Then
       Zeile = i
       Cells(i, "C") = Cells(i, "B")
       Cells(i, "E") = Cells(i, "D")
   Else
       Cells(i, "C") = Cells(Zeile, "B") & " " & Cells(i, "B")
       Cells(i, "E") = Cells(Zeile, "D") & " " & Cells(i, "D")
   End If
Next i
End Sub
Hallo Berni,
vielen Dank fü deine schnelle Antwort.
Nun hätte ich aber eine Frage zum Code ... bin leider nicht so fit in Excel
mit Alt+F11 öffne ich die VBA, dort kopiere ich mir den Code in meine Tabelle
und speichere und schließe die VBA mit Alt+F4

täusche ich mich oder müsste ich nun mit =verbinden in die Zelle C eine Formel eingeben können?

Danke
Franz
Hi Franz,

ALT und F11 sind richtig und dann Einfügen Modul und in diesem Modul den Code speichern.
Auslösen kannst du ihn mit ALT und F8 und Ausführen!

LG
Alexandra
Du täuschst dich insofern, als ich dir keine Function geschrieben habe, sondern eine "normale" Prozedur. Nur eine Function würde das machen, was du beschrieben hast.
Wie bereits von Alexandra beschrieben, brauchst du das Makro nur händisch ausführen.
Hallo,

mir ist leider immer noch die weitere Vorgehensweise unklar :(
wenn ich zB nach der Spalte eine Spalte C einfüge wo ich den Mutter- und Tochtertext
in meinem Beispiel schon verkettet habe und dort Alt+F8 drücke, sehe ich das Makro verbinden.
Drücke ich dort auf Ausführen kommt die Fehlermeldung "Laufzeitfehler '1004#: Anwendungs-
oder objektdefinierter Fehler"

ich würde leider eine Anweisung für Anfänger brauchen.

Danke nochmals
Hallo Berni,
jetzt habe ich es hinbekommen mit der Tabelle die ich angehängt habe.
Aber leider funktioniert es mit der gesamten Tabelle nicht.
Dürfte ich sie dir bitte zur Durchsicht als E-Mail zuschicken?
Danke
Franz
Hi Franz,

der Code von Berni ist fest. Das heißt fügst du Spalten ein oder löscht du Spalten, dann muss der Code angepasst werden!


Oder die Reihenfolge der Spalten ändern sich, das gleiche, Code muss angepasst werden!

LG
Alexandra
Hallo nochmal,

jetzt habe ich es einigermaßen hinbekommen.
Wenn ich die ersten 3 Zeilen der Tabelle rauslösche kommt eine Fehlermeldung.

Leider verkettet der Code nur richtig wenn das Format der ersten spalte xx.xx.xx.xx bzw xx.xx.xx.xx.A,
also 8- bzw. 9-stellig ist. Ist der Kodex nur 4-stellig (xx.xx) bzw. 6-stellig (xx.xx.xx) wird immer der Wert
der vorigen Spalte als Muttertext übernommen, was aber nicht geschehen sollte.

Hänge mal die komplette Tabelle an und habe dort in den Spalten 20-26 den Fehler orange markiert.
Der Mutter- und Tochertext dürfte nur verkettet werden, wenn der Kodex bis auf die letzte Stelle,
in diesem Fall der Buchstabe A bis ... übereinstimmt.
Als Beispiel
54.05.03.01 mit 54.05.03.01.A = zu verketten
54.10 mit 54.05.03.01.A = nicht zu verketten
54.10.20 mit 54.05.03.01.A = nicht zu verketten

Danke
Hallöchen,

ich würde es mal so versuchen. Vorher aber die Daten sichern Smile

Code:
Sub verbinden()
Dim i As Integer, Zeile As Integer
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
   If Len(Cells(i, 1)) = 11 Then
       Zeile = i
       Cells(i, "C") = Cells(i, "B")
       Cells(i, "E") = Cells(i, "D")
   End If
   If Len(Cells(i, 1)) > 11 Then
       Cells(Zeile, "C") = Cells(Zeile, "C") & " " & Cells(i, "B")
       Cells(Zeile, "E") = Cells(Zeile, "D") & " " & Cells(i, "D")
   End If
Next i
End Sub
Seiten: 1 2