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

Automat. Anpassung bei Verschieben von Spalten

Automat. Anpassung bei Verschieben von Spalten
17.02.2017 10:05:04
Spalten
Hallo zusammen,
folgendes Problem:
Ich habe in meinem Makro mehrere Formeln hinterlegt, z.B.:
Worksheets("Übersicht").Range("B2:B" & letzteZeile).FormulaLocal = "=INDEX(PLDs!$A:$Y;VERGLEICH(A2;PLDs!$Y:$Y;0);1)"
Worksheets("Übersicht").Range("C2:C" & letzteZeile).FormulaLocal = "=WENNFEHLER(INDEX(ISAs!$D:$AB;VERGLEICH(A2;ISAs!AB:AB;0);1);"""")"
Es handelt sich hier also um Formeln, die komplette Spalten füllen.
Die Formeln funktionieren super zum aktuellen Zeitpunkt. Das Makro ist allerdings für ein Abteilung, die möglicherweise die Spaltenreihenfolge verschieben möchte. Formeln werden ja üblicherweise automatisch angepasst, wenn sich der Zellbezug ändert. Das bedeutet, wenn ich Spalte B in Spalte D haben möchte, dann kann ich die Spalte verschieben und die Formel passt sich automatisch an. Hinterlege ich die Formel im Makro ist dies allerdings nicht der Fall! Gibt es hier eine Lösung, dass auch hier die Formeln automatisch angepasst werden?
Ein Makro komplett ohne Formeln macht in diesem speziellen Fall übrigens kein Sinn, das ist also keine Lösung :)
Viele Grüße,
Pascal

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Automat. Anpassung bei Verschieben von Spalten
17.02.2017 14:43:35
Spalten
Hi Pascal,
es sind zwei Fälle zu unterscheiden:
a) wo die Formeln stehen und
b) auf welche Bereiche sie sich beziehen.
a) Wenn die Formel statt in B in D soll, muß der FormelTEXT nicht geändert werden
b) Wenn die Formel in B bleibt, aber Werte aus einer anderen Spalte "gezogen" werden sollen, muß der Formeltext anders lauten.
Wenn Dir nicht klar ist, ob die Abteilung Spalten verschiebt, wird Dir auch nicht klar sein, ob Verschiebungen nach a), b) oder a) UND b) vorgenommen werden.
Lösungsmöglichkeiten:
Zuerst Spalten nach Überschriften zusammensuchen oder, wenn da intelligente Leute arbeiten, ein Blatt mit Konfigurationsinformationen anlegen: wenn Änderungen vorgenommen werden, müssen sie dann die Konfiguration entsprechend anpassen, bevor das Makro erneut angworfen wird.
Der Königsweg wäre eine Plausibilisierung, die zu Beginn des Makros überprüft, ob die Überschriften mit der Konfig übereinstimmen, und die dann bei Bedarf "schreit".
Die Konfiguration selbst wäre pro Formel etwa eine Zeile mit Werten:
A1: Buchstabe wohin, also B
B1: Buchstabe für Vergleich, also Y
C1: Buchstabe für woher, also A:Y, wobei hier wegen Index(x,y,1) eigentlich A:Y unsinnig ist: A genügt.
Im Makro dann:
Sub t()
Dim FS   ' wie FormelSpalten
Dim letzteZeile&
letzteZeile = 3
FS = Range("A1:C1").Value
Debug.Print "Range(" & FS(1, 1) & "2:" & FS(1, 1) & letzteZeile & ")"
Debug.Print "=INDEX(PLDs!$" & FS(1, 3) & ":$" & FS(1, 3) & _
";VERGLEICH(A2;PLDs!$" & FS(1, 2) & ":$" & FS(1, 2) & ";0);1)"
Stop
' Also dann so - geht natürlich bei mir nicht mangels Blättern:
Worksheets("Übersicht").Range(FS(1, 1) & "2:" & FS(1, 1) & letzteZeile).FormulaLocal = _
"=INDEX(PLDs!$" & FS(1, 3) & ":$" & FS(1, 3) & _
";VERGLEICH(A2;PLDs!$" & FS(1, 2) & ":$" & FS(1, 2) & ";0);1)"
End Sub

Debug.Print-Testausgabe:
Range(B2:B3)
=INDEX(PLDs!$A:$A;VERGLEICH(A2;PLDs!$Y:$Y;0);1)
Schöne Grüße,
Michael
Anzeige

103 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige