Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1236to1240
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

Zellbezüge per VBA tauschen

Zellbezüge per VBA tauschen
pbaer007
Hallo VBA-Gemeinde,
in einer Arbeitsmappe gibt es ein Summenblatt, welches sich auf verschiedene Blätter (z.Bsp: Abt1, Abt2, ...) bezieht.
Monatlich wird ein Block in den Abteilungsblättern angefügt, so dass Summenbeträge in Monat 1 in Zelle D4 bis D20 stehen, im nächsten in H4 bis H20, dann in L4 bis L20, usw.... (ist auf allen Blättern gleich).
Dies wird per Makro gesteuert. Wobei die letzte genutzte Spalte (Count) gesucht wird, davon ausgehend der Bereich ([letzte genutzteSpalte]-4:[letzte genutzteSpalte]) markiert/kopiert und dann in Spalte ([letzte genutzteSpalte]+1) eingefügt wird.
Ich suche nun eine Lösung, um die Summenformeln auf dem Summenblatt ebenso mit dem Makro zu ändern:
B2=ROUND(SUM(Abt1!D4:D8);2)
B7=ROUND(SUM(Abt2!D4:D8)+SUM(Abt2!D11:D13);2)
D7=ROUND(Abt3!D4+Abt3!D14+Abt3!D24;2)
Für den 2. Monat sollten die Bezüge auf "D" gegen Bezüge auf "H" getauscht werden.
Wobei dafür nur das CountColumn Result zur Verfügung steht. Also 8 für "H".
Für den 3. Monat sollen die Bezüge auf "H" gegen Bezüge auf "L" getauscht werden (Count-Result 12), usw...
Gibt es eine Möglichkeit die Spaltenbezüge auf der Summenseite ähnlich der "find & replace"-Funktion in einem Bereich (A1:E20) zu ändern, ohne jede einzelne Formel gesondert anzusprechen und mit der "Address"-Funktion entsprechend zu ändern?
Schon einmal vielen Dank .....
Gert

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellbezüge per VBA tauschen
22.11.2011 08:38:34
fcs
Hallo Gert,
mit Suchen/Ersetzen für den gesamten Bereich könnte es Probleme geben.
Ich würde in jede Formel einzeln erstzen.
Sieht dann etwa so aus.
Gruß
Franz
Sub Formeln()
Dim strNeu As String, strAlt As String, lngSp As Long
Dim Zelle As Range, strFormel As String
'letzte Spalte im Abteilungsblatt
With Worksheets("Abt1")
lngSp = Worksheets("Abt1").Cells(1, .Columns.Count).End(xlToLeft).Column
End With
'Buchstaben der Spalten ermitteln
strNeu = Chr(lngSp + 65 - 1)
strAlt = Chr(lngSp + 65 - 1 - 4)
'Im Summenblatt in den Formeln die alte Spalte durch die neue Spalte ersetzen
With Worksheets("Summenblatt")
For Each Zelle In .Range("A1:E20")
If Zelle.HasFormula Then
strFormel = Zelle.FormulaLocal
strFormel = Replace(strFormel, "!" & strAlt, "!" & strNeu)
strFormel = Replace(strFormel, ":" & strAlt, ":" & strNeu)
Zelle.FormulaLocal = strFormel
End If
Next
End With
End Sub

Anzeige
AW: Zellbezüge per VBA tauschen
22.11.2011 12:06:28
pbaer007
Hallo Franz,
vielen Dank schon einmal.
"Werd mal mein Glück versuchen."
Grüße
Gert
AW: Zellbezüge per VBA tauschen
22.11.2011 12:53:16
pbaer007
Hallo Franz,
nochmals vielen Dank für den Lösungsansatz.
Bis zur Spalte 26 (Z) funktioniert es auch, aber ab "AB" = Spalte 27 bekomme ich dann falsche Strings.
Es gibt sicherlich eine bessere Lösung als

If IngSp > 26 then
IngSp = IngSp-26
strNeu="A" & chr(ingSp +65 -1)
End If

denn so müsste ich ja für jede Spaltengruppe (AA-AZ , BA-BZ , usw) eine Abfrage durchlaufen.
Kannst Du mir da noch einmal auf die Sprünge helfen?
Vielen Dank & viele Grüße
Gert
Anzeige
AW: Zellbezüge per VBA tauschen
22.11.2011 14:49:58
Rudi
Hallo,
strNeu = Replace(Cells(1, lngsp).Address(0, 0), "1", "")
strAlt = Replace(Cells(1, lngsp - 4).Address(0, 0), "1", "")
Gruß
Rudi
AW: Zellbezüge per VBA tauschen
22.11.2011 19:25:53
pbaer007
Hi Rudi,
Das war's. Jetzt funktioniert der Lösungsansatz von Franz.
Das nenn ich mal Team-Work!
Vielen Dank
Gert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige