Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Excel-Axl am Februar 03, 2015, 12:09:04 Nachmittag

Titel: Auflistung sämtlicher Formeln in gesondertem Tabellenblatt
Beitrag von: Excel-Axl am Februar 03, 2015, 12:09:04 Nachmittag
Hallo,

ich habe eine Excel-Datei, die mehrere Tabellenblätter und einige hundert Formeln beinhaltet.

In einem gesonderten Tabellenblatt (z.B. "Formeldokumentation") sollen künftig sämtliche Formeln der Excel-Datei aufgelistet werden können.  :o

Z.B. in folgender Art:
Spalte A: Tabellenblatt (z.B. "Tabelle1")
Spalte B: Zelle (z.B. C7)
Spalte C: Formel

Wie kann ich dieses mittels eines Makros lösen?
Gibt es auch eine Alternative zu einem Makro und wenn ja, wie müsste die aufgebaut werden?

Am schönsten wäre es, wenn das Makro oder whatever jedes Tabellenblatt Zeile für Zeile nach Formeln durchsuchen würde, wäre aber letztlich egal...

Da ich leider keine Makro-Erfahrung habe, wäre es toll wenn eure Hinweise nicht zu verkürzt ausfallen...  ;)

Vielen Dank im Voraus!

Titel: Antw: Auflistung sämtlicher Formeln in gesondertem Tabellenblatt
Beitrag von: gmg-cc am Februar 03, 2015, 13:38:18 Nachmittag
Moin,

Füge diesen Code in das Modul "DieseArbeitsmappe" ein:
Option Explicit

Sub AlleFormeln()
   Dim wksBlatt As Worksheet, wksFormeln As Worksheet
   Dim c As Range
   Dim BlName As String
   Dim fRow As Long
   
   Set wksFormeln = Sheets("Formeln")
   With wksFormeln
      .Cells(1, 1) = "Blatt-Name"
      .Cells(1, 2) = "Zell-Adresse"
      .Cells(1, 3) = "Formel"
   End With
   
   For Each wksBlatt In ActiveWorkbook.Sheets
      BlName = wksBlatt.Name
      If BlName <> "Formeln" Then
         For Each c In wksBlatt.UsedRange
            If c.HasFormula Then
               fRow = wksFormeln.Cells(Rows.Count, 1).End(xlUp).Row + 1
               With wksFormeln
                  .Cells(fRow, 1) = BlName
                  .Cells(fRow, 2) = c.Address(0, 0)
                  .Cells(fRow, 3) = "'" & CStr(c.Formula)
               End With
            End If
         Next c
      End If
   Next wksBlatt
End Sub

Zitat
Da ich leider keine Makro-Erfahrung habe, wäre es toll wenn eure Hinweise nicht zu verkürzt ausfallen...  ;)
habe ich gelesen. Aber wenn ich schon kostenlose Lösungen liefere, dann muss einfach noch eine "Reserve" für meine zahlenden Kunden bleiben. Da ist solch ein Code natürlich kommentiert und auch noch etwas "eleganter".  8)

Hinweis: Das Blatt, wo die Auswertung drin steht, MUSS den Namen "Formeln" (ohne Anführungen) haben, oder du änderst den Namen im Code.

EDIT: Code wegen eines Fehlers geändert
Titel: Antw: Auflistung sämtlicher Formeln in gesondertem Tabellenblatt
Beitrag von: Excel-Axl am Februar 04, 2015, 08:56:25 Vormittag
Hallo Günther,

WOW...  Vielen vielen Dank für das Makro!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
:) :) :) :) :) :) :)

Viele Grüße
Mark
Titel: Antw: Auflistung sämtlicher Formeln in gesondertem Tabellenblatt
Beitrag von: medic am Februar 26, 2015, 23:16:12 Nachmittag
interessantes Skript!
Bei mir kommt allerdings (unter 2003) folgendes raus:

Blatt-Name   Zell-Adresse   Formel
Tabelle1   D2   =HLOOKUP(B2,$B$12:$F$13,2,FALSE)

wie kann ich die (mir gängigen) deutschen Formeln angeben lassen?
Titel: Antw: Auflistung sämtlicher Formeln in gesondertem Tabellenblatt
Beitrag von: gmg-cc am Februar 27, 2015, 00:02:00 Vormittag
… nicht nur unter 2003  8) Das sind nämlich die "wirklichen" Formeln. - Ändere den Code so ab:

.Cells(fRow, 3) = "'" & CStr(c.Formula[color=red][b]Local[/b][/color])
und du hast die Ausgabe der Formeln in der auf dem Rechner installierten Sprache, vermutlich deutsch.