2017-09-15 7 views
-1

Ich habe 2 Formeln in zwei verschiedenen Zellen, die ich in 1. zusammenführen möchten Sie sehen aus wie:Excel VBA - Merge 2 Zelle Formeln

ActiveCell.Formula = "=(" & Range(Cells(k1, 2), Cells(k1, 2)).Address(False, False) & "+" & Range(Cells(k1, 6), Cells(k1, 6)).Address(False, False) & ")" 

ActiveCell.Formula = "=(" & Range(Cells(k4, 2), Cells(k4, 2)).Address(False, False) & "+" & Range(Cells(k4, 6), Cells(k4, 6)).Address(False, False) & ")" 

Wo k4/k1 sind Werte von einer For-Schleife. Gibt es eine Möglichkeit für mich, diese 2 Zellen hinzuzufügen, aber behalten Sie die Formel?

Also, wenn der Wert in der ersten Zelle war = A1 + A2 (5) und der zweite war = B1 + B2 (15). Dann wäre die Zelle, für die ich den endgültigen Wert haben möchte, = A1 + A2 + B1 + B2 anstelle von nur 20. Auf diese Weise würde der Wert neu berechnet, wenn die Werte in A1/A2/B1/B2 geändert würden.

Hoffe das macht Sinn

+0

Warum nicht einfach die zweite Zeichenfolge an das Ende der ersten hinzufügen? – SJR

Antwort

1

Etwas wie unten? Was sie tut, ist:

1) einen Container Variable Erzeugt alle Formeln zu sammeln (result)

2) Bereich Loops durch

3) Sammelt die Zellenformel (mit Ausnahme der Gleichheitszeichen) (func)

4) verkettet die Zellformeln

5) Gibt das Ergebnis in eine Zelle

Beachten Sie jedoch, dass dies für viele (oder lange) Formeln zu einem Bruch führen kann, wenn sie für Excel zu viel werden.

Sub merge() 

result = "" 

For Each cell In ActiveSheet.Range("C1:C2") 

func = Right(cell.Formula, Len(cell.Formula) - 1) 

result = result & "+" & func 

Next cell 

ActiveSheet.Range("C3").Formula = result 

End Sub