26.03.2019, 14:54 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2019, 15:00 von FraLei.)
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.
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?
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.
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.
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
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
ich würde es mal so versuchen. Vorher aber die Daten sichern
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
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)