das du das nicht lesen kannst ist nicht klar.
Weil, das ist ein Forum für Leute, die sich gegenseitig bei Problemen helfen. Wie es in allen fachspezifischen Foren so üblich ist.
Wenn du nur einen Dienstleister suchst, der deine Aufgaben erledigt, dann bist du hier falsch. Die Codes ,die du hier bekommst zeigen meist nur den direkten Weg. Alle Unwägbarkeiten, die beim Arbeiten mit Daten vorkommen können sind dort nicht abgeprüft und können im schlimmsten Falle echt übel werden wenn man sie im produktiven Umfeld einfach so einsetzt. Das ist der Preis bei kostenloser Hilfe.
Du wolltest doch ursprünglich das die Formeln aus den Spalten in die neue Zeile übernommen werden. Das läßt sich aus Post vom 23.01.2025 09:44:43 ableiten. Genau das macht der Code.
Ich erkläre dir den Code auch wenn ich schon Kommentare eingefügt hatte.
das Worksheet_selection change makro reagiert immer wenn eine Zelle ausgewählt wird. Hier wird gepüft ob es sich um Spalte a oder b handelt und dann geprüft ob man sich in einer leeren Zelle befindet und oben drüber die Zelle gefüllt ist. Target ist eine Variable ,die die aktive Zelle repräsentiert. Sind die Prüfungen erfolgreich wird das Ersetzungsmakro aufgerufen.
und hier passiert Folgendes.
Split("G,H,I,K,M,O", ",") hier werden die Spalten, für die Formeleinfügeoperation festgelegt.
In der äusseren for-schleife erhält itm pro durchgang jeweils einen der Buchstaben aus dem Array mit den Spaltenbezeichnungen.
intersect() gibt die schnittmenge aus dieser Spalte und dem im Blatt benutzten Bereich zurück. Damit wird dann weitergemacht.
die innere for- schleife durchläuft die Zellen der Schnittmenge(eine Spalte) von unten nach oben um die nächste Formel in einer Zelle zu finden, die der neuen Zeile am nächsten ist.
in der gefundenen Formel werden dann die vorhandenen Zeilennummern durch die Zeilennummer der neuen Zeile(aktive Zelle) ersetzt.
Cells(lrow, itm).FormulaLocal = stextformula
Ich habe mich dazu entschieden die Formeln, die du angegeben hast nicht zu verwenden, sondern die Formeln aus der jeweiligen Spalte zu nutzen.
Damit mußt du die Formeln nicht im Code festschreiben und der Code ist flexibler. Es reicht quasi nur die Spalten in den Split-Befehl zu schreiben.
|