Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
Häufige FragenFormeln auslesen - Englische Formelnamen und mehr
Autor: Peter Haserodt - Erstellt: -- - Letzte Revision: --
Immer wieder gibt es die Frage: Wie sieht eigentlich die Formel in einer bestimmten Zelle aus.
Vor allem: Wie wäre es in Englisch?
Oder ist es eine Matrixformel oder oder ...
Nehmen wir folgendes simples Beispiel:
|
Formeln |
| A | B | C | D | E | F | 1 | | | | | | | 2 | | | | | | | 3 | | | | | | | 4 | | 1 | 5 | | 36 | | 5 | | 2 | 6 | | | | 6 | | 3 | 7 | | 70 | | 7 | | 4 | 8 | | 12 | | 8 | | | | | | | Formeln der Tabelle | E4 : =SUMME(B4:C7) E6 : {=SUMME((B4:B7)*(C4:C7))}
Enthält Matrixformel: Umrandende { } nicht miteingeben, sondern Formel mit STRG+SHIFT+RETURN abschließen! |
|
|
Und wir wollen Informationen über die farbigen Zellen haben ...
Erstellen Sie dazu folgenden Code:
' **************************************************************
' Modul: mdlFormelAusgabe Typ = Allgemeines Modul
' **************************************************************
Option Explicit
' Beispiel für Formelauslesen mit UDF
' Peter Haserodt 2005
Public Function Deu_FormelA1(DieZelle As Range) As String
If DieZelle.HasArray Then
Deu_FormelA1 = "{" & DieZelle.FormulaLocal & "}"
Else
Deu_FormelA1 = IIf(DieZelle.HasFormula, _
DieZelle.FormulaLocal, "Keine Formel")
End If
End Function
Public Function Deu_FormelR1(DieZelle As Range) As String
If DieZelle.HasArray Then
Deu_FormelR1 = "{" & DieZelle.FormulaR1C1Local & "}"
Else
Deu_FormelR1 = IIf(DieZelle.HasFormula, _
DieZelle.FormulaR1C1Local, "Keine Formel")
End If
End Function
Public Function Eng_FormelA1(DieZelle As Range) As String
If DieZelle.HasArray Then
Eng_FormelA1 = "{" & DieZelle.Formula & "}"
Else
Eng_FormelA1 = IIf(DieZelle.HasFormula, DieZelle.Formula, "Keine Formel")
End If
End Function
Public Function Eng_FormelR1(DieZelle As Range) As String
If DieZelle.HasArray Then
Eng_FormelR1 = "{" & DieZelle.FormulaR1C1 & "}"
Else
Eng_FormelR1 = IIf(DieZelle.HasFormula, _
DieZelle.FormulaR1C1, "Keine Formel")
End If
End Function
Hier haben wir einfach ein paar benutzerdefinierte Funktionen geschrieben (UDF in der Fachsprache : User Defined Function)
Jetzt müssen wir nur noch diese Funktionen im Tabellenblatt anwenden, dies könnte dann so aussehen:
|
Formeln |
| A | B | C | D | E | F | G | H | I | 1 | | | | | | | | | | 2 | | | | | | | | | | 3 | | | | | | | Deutsch A1 | Deutsch Z1(R1) | | 4 | | 1 | 5 | | 36 | | =SUMME(B4:C7) | =SUMME(ZS(-3):Z(3)S(-2)) | | 5 | | 2 | 6 | | | | Keine Formel | Keine Formel | | 6 | | 3 | 7 | | 70 | | {=SUMME((B4:B7)*(C4:C7))} | {=SUMME((Z(-2)S(-3):Z(1)S(-3))*(Z(-2)S(-2):Z(1)S(-2)))} | | 7 | | 4 | 8 | | 12 | | Keine Formel | Keine Formel | | 8 | | | | | | | | | | 9 | | | | | | | Englisch A1 | Englisch Z1(R1) | | 10 | | | | | | | =SUM(B4:C7) | =SUM(RC[-3]:R[3]C[-2]) | | 11 | | | | | | | Keine Formel | Keine Formel | | 12 | | | | | | | {=SUM((B4:B7)*(C4:C7))} | {=SUM((R[-2]C[-3]:R[1]C[-3])*(R[-2]C[-2]:R[1]C[-2]))} | | 13 | | | | | | | Keine Formel | Keine Formel | | 14 | | | | | | | | | | Formeln der Tabelle | E4 : =SUMME(B4:C7) G4 : =Deu_FormelA1(E4) H4 : =Deu_FormelR1(E4) G5 : =Deu_FormelA1(E5) H5 : =Deu_FormelR1(E5) E6 : {=SUMME((B4:B7)*(C4:C7))} G6 : =Deu_FormelA1(E6) H6 : =Deu_FormelR1(E6) G7 : =Deu_FormelA1(E7) H7 : =Deu_FormelR1(E7) G10 : =eng_formela1(E4) H10 : =eng_formelr1(E4) G11 : =eng_formela1(E5) H11 : =eng_formelr1(E5) G12 : =eng_formela1(E6) H12 : =eng_formelr1(E6) G13 : =eng_formela1(E13) H13 : =eng_formelr1(E13)
Enthält Matrixformel: Umrandende { } nicht miteingeben, sondern Formel mit STRG+SHIFT+RETURN abschließen! |
|
|
Sieht doch gut aus oder?
Der Unterschied zwischen den einzelen Formelabfragen wird an anderer Stelle erklärt (Formeln schreiben)
Interessant in unserem Code ist die Prüfung ob eine Arrayformel vorliegt (HasArray) und wenn nicht ob wenigstens eine Formel vorhanden ist (HasFormula)
Weiterhin kann man schön sehen, dass bei der Formeleingabe in der Zelle es wurscht ist, wie man die UDF schreibt - also das ist nicht CaseSensitiv.
Ich möchte für den geneigten R1C1ler (Z1S1) auf einen wichtigen Unterschied aufmerksam machen:
Ist es Ihnen aufgefallen, dass in der englischen Version [] anstatt () vorhanden sind?
So - und nun viel Spass beim experimentieren.
Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben