Siehe auch: | Formeln in Zellen schreiben | 

Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Häufige Fragen

Formeln 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
 ABCDEF
1      
2      
3      
4 15 36 
5 26   
6 37 70 
7 48 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
 Peter Haserodt
  • Formelhilfe
  • Makroentwicklung
  • VBA-Programmierung
  • + + + + + + + + +
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
 ABCDEFGHI
1         
2         
3      Deutsch A1Deutsch Z1(R1) 
4 15 36 =SUMME(B4:C7)=SUMME(ZS(-3):Z(3)S(-2)) 
5 26   Keine FormelKeine Formel 
6 37 70 {=SUMME((B4:B7)*(C4:C7))}{=SUMME((Z(-2)S(-3):Z(1)S(-3))*(Z(-2)S(-2):Z(1)S(-2)))} 
7 48 12 Keine FormelKeine Formel 
8         
9      Englisch A1Englisch Z1(R1) 
10      =SUM(B4:C7)=SUM(RC[-3]:R[3]C[-2]) 
11      Keine FormelKeine 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 FormelKeine 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