Zähler oder Nenner ausgeben

Mittels einer Funktion (UDF) den Zähler oder Nenner einer Division zurückgeben

Vor Excel 2013 war es mit „Bor­d­mit­teln” nicht möglich, den Text ein­er Formel in ein­er Zelle auszugeben oder sonst­wie auszuw­erten. Für alle Ver­sio­nen ist eine UDF hil­fre­ich oder sog­ar von­nöten, wenn aus ein­er eingegebe­nen Divi­sions-Formel der Div­i­dend und/oder der Divi­sor berech­net wer­den sollen. Im fol­gen­den Code wird wegen der besseren Unter­schei­dung und auch kürz­eren Schreib­weise „Z” für „Zäh­ler” und „N” für „Nen­ner” statt „Div­i­dend” oder „Divisor„verwendet.

Hin­weis: Diese Funk­tion ist darauf aus­gelegt, dass auss­chließlich die Divi­sion in der Zelle berech­net wird. Ist die eigentliche Divi­sion nur ein Teil der Gesamt­formel, kann diese UDF kein kor­rek­tes Ergeb­nis brin­gen.

Die Funk­tion muss in einem all­ge­meinen Mod­ul gespe­ichert wer­den, siehe auch hier. Der Aufruf erfol­gt dann beispiel­sweise so:
=DivisionsTeil(A1;"z")
wobei A1 die auszuw­er­tende Zelle ist und "z" für den Zäh­ler, also den Div­i­den­den ste­ht. Die Groß- Klein­schrei­bung ist nicht rel­e­vant. – Hier nun der Code:

Option Explicit

Function DivisionsTeil(c As Range, ZN As String) As Variant
   Dim Formel As String
   Dim SlashPos As Integer
   Dim Zahl As Variant
   
   Formel = c.FormulaLocal
   If Left(Formel, 1) <> "=" Then   'Dann wohl Text
      MsgBox "Die Zelle " & c.Address(0, 0) & " enthält keine Formel!"
      DivisionsTeil = ""
      Exit Function
   End If
   Formel = Right(Formel, Len(Formel) - 1)   '= kürzen
   SlashPos = InStr(Formel, "/")
   
   If SlashPos = 0 Then 'Keine Division
      MsgBox "Die Zelle " & c.Address(0, 0) & " enthält keine Division!"
      DivisionsTeil = ""
      Exit Function
   End If
   
   If UCase(ZN) = "Z" Then
      Zahl = Left(Formel, SlashPos - 1)
      DivisionsTeil = CDbl(WorksheetFunction.Substitute(Zahl, ".", ","))
   Else
      Zahl = Right(Formel, Len(Formel) - SlashPos)
      DivisionsTeil = CDbl(WorksheetFunction.Substitute(Zahl, ".", ","))
   End If
End Function

Sie kön­nen den Code als gepack­te *.zip hier herunter laden. Dort ist ein­er­seits der reine Text zum ein­fü­gen oder eine *.bas zum Import in ein Mod­ul enthal­ten.

Hin­weis: Diese Funk­tion prüft, ob es sich um eine Formel mit ein­er Divi­sion han­delt. Mit reinen Bor­d­mit­teln ist das auch in Excel 2013 nicht so ein­fach zu real­isieren. Aus dem Grunde ist es in jedem Fall eine Über­legung Wert, auch in dieser Ver­sion solch eine UDF einzuset­zen.

… Und wenn abso­lut sich­er gestellt ist, dass in der abge­fragten Zelle nur eine Divi­sions-Formel ste­ht, dann geht es auch „ohne Netz und dop­pel­ten Boden”, also ohne jegliche Kon­troll-Möglichkeit mit solch ein­er Funk­tion:

Function ZaehlerNenner(c As Range, ZN As Integer)
   Dim aZN
   
   aZN = Split(c.FormulaLocal, "/")
   If ZN = 1 Then
      ZaehlerNenner = aZN(0)
   ElseIf ZN = 2 Then
      ZaehlerNenner = aZN(1)
   Else
      ZaehlerNenner = ""
   End If
End Function

Wir räu­men ein, dass die Split-Funk­tion auch im oberen Beispiel einge­set­zt wer­den kann. Aber nur wenn Sie die Wege ken­nen, kön­nen Sie die Rich­tung entschei­den. Zu diesem Mini-Code gibt es keinen Down­load, ein­fach kopieren und in das Mod­ul ein­fü­gen.


 

Ergänzung: Wenn Sie eine Lösung ohne VBA vorziehen, kann das in gewis­sen Gren­zen auch mit rein­er Tabel­len­funk­tion­al­ität erre­icht wer­den. Voraus­set­zung ist, dass wirk­lich nur ein Bruch, eine Divi­sion in der oder den Quellzelle/n ste­ht. Gehen Sie dazu so vor:

  • Markieren Sie den auszuw­er­tenden Bere­ich
  • Dat­en | Text in Spal­ten | Getren­nt
  • Weit­er >
  • Als Trennze­ichen (nur) den Schrägstrich (Divi­sion­sze­ichen) bei Andere: ein­tra­gen
  • Weit­er >
  • Im Feld Ziel­bere­ich die linke, obere Zelle eingeben, wo die Aus­gabe erfol­gen soll.

Begin­nend  in der benan­nten Ziel-Zelle wird nun der Div­i­dend (Zäh­ler) und in der daneben­liegen­den Zelle der  Divi­sor (Nen­ner) einge­tra­gen.

 [NachOben­Let­zte Verweis=„CS: Zähler+Nenner zurück­geben”]

Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Rechnen & Zahlen abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.