Wie von Máté Juhász angemerkt, können benutzerdefinierte Formeln andere Zellen nicht ändern. Wenn Sie dies versuchen, wird ein #WERT zurückgegeben. Fehler in der Zelle, die die Formel belegt.
In Bezug auf den ersten Teil (Zugriff auf den Wert einer Zufallszelle, z. B. D3) können Sie einfach den Wert der Range-Variablen der Quellzelle zurückgeben:
Function MyFunction(SourceCell As Range) MyFunction = SourceCell.Value End Function
Dies kann in Ihrer ursprünglichen Formel verwendet werden =IF(C3=B3,myfunction(D3),"")
, wobei diese Formel direkt in z. B. F3 platziert wird. Es kann auch in zB E3 verwendet werden, indem der Wert von F3 in geändert wird =E3
.
Sie sind (offensichtlich) nicht auf eine Zelle beschränkt. Wenn Sie den Anfangsvergleich in der Formel selbst durchführen möchten, können Sie verwenden, =myfunction(B3, C3, D3)
wo die Funktion etwa so aussehen könnte:
Dim ReturnValue As Variant Function MyFunction(FirstCell As Range, SecondCell As Range, SourceCell As Range) If FirstCell.Value = SecondCell.Value Then 'If our source is empty, return an error If SourceCell.Value = "" Then ReturnValue = "Empty Source" Else ReturnValue = SourceCell.Value End If Else 'Our input cells aren't equal ReturnValue = "Not Equal" End If 'Return our final value to the cell MyFunction = ReturnValue End Function