an ralf_b oder an euch alle
09.03.2023 13:25:02
Antonio
bei diesem Code hat mir ralf_b sehr geholfen um weiter zu kommen.
Sub M_snb() BereichFbisG = Cells(1, 2).Resize(60, 6) ' Debug.Print sn.Address spalteM = Range("M3:M10") n = 3 For j = 3 To 7 'von Zeile 3 - 6 für Beispieldaten WerteAusZelleSpalteF = Split(BereichFbisG(j, 5), ",") 'Zerlegung der Inhalte von Zelle ab Zeile 3 in Spalte 6 (F) sn beginnt bei B BereichFbisG(n, 6) = BereichFbisG(j, 1) 'Inhalt spalte B Zeile ab j=3 wird in Spalte 6(G) n=3 geschrieben n = n + 1 'Zeile erhöhen um 1 For jj = 2 To UBound(spalteM) 'Schleife über die Einträge in M BereichFbisG(n, 6) = "." ' Punkt in Spalte G schreiben WerteVonZellenAusM = Split(spalteM(jj, 1), ",") 'Zellinhalt von Spalte M wird zerlegt ab Zeile 3 If WerteVonZellenAusM(0) > "." Then ' nur wenn kein Punkt vorne dran ist On Error Resume Next For Each Wert In WerteVonZellenAusM ' Schleife über die einzelnen Werte BereichFbisG(n, 6) = BereichFbisG(n, 6) & "," & WerteAusZelleSpalteF(Wert - 1) 'Umsortierte Werte aus Spalte F nach G Next On Error GoTo 0 BereichFbisG(n, 6) = Mid(BereichFbisG(n, 6), 3) 'in Spalte G führender Punkt und Komma enfernen End If n = n + 1 'nächste Zeile Next Next Cells(1, 2).Resize(60, 6) = BereichFbisG 'bearbeitetes Array in Blatt zurückschreiben End Sub
Tabelle2:
aus dem Muster in "M3;M10" wo Akkord steht, wird in Spalte "G"
aus Spalte "B" der Akkord, hier Am7 eingetragen
der Rest ist die Zerlegung aus Spalte "F".
Wenn aber in "M5" wieder Akkord geschrieben wird, bleibt "G5" leer.
Tabelle3 wie es aussehen sollte:
Ich würde gerne um Eure Hilfe bitten um zu erfahren wo und was soll ich im code ändern das es funzt.
Danke im Voraus
LG Antonio