Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

WENNFEHLER-Formel als Makro

WENNFEHLER-Formel als Makro
12.02.2021 08:58:49
Spitzbube
Hallo zusammen,
ich muss in vielen Excel-Zellen, die unterschiedliche Formeln enthalten, die Formel =WENNFEHLER("irgendeine Formel",0) nachfügen, um das #DIV/0! Problem zu umgehen. Hat dafür jemand einen VBA-Ansatz, damit ich die ganzen Zellen nicht einzeln händisch nachbessern muss?
Vielen Dank im Voraus + besten Gruß

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WENNFEHLER-Formel als Makro
12.02.2021 09:23:36
UweD
Hallo
so?

Sub Fehler()
Dim Z
With Sheets("Tabelle1")
On Error GoTo Noerrors
For Each Z In Cells.SpecialCells(xlCellTypeFormulas, 16) ' nur Zellen mit Fehler
Z.FormulaR1C1 = "=IFERROR(" & Mid(Z.FormulaR1C1, 2) & ",0)"
Next
End With
Exit Sub
Noerrors:
MsgBox "Keine Fehler gefunden"
End Sub
LG UweD
update..
12.02.2021 09:45:25
UweD
Hallo nochmal
So werden nur die #DIV/0! Fehler bereinigt

Sub Fehler()
Dim Z, FW As String
FW = "#DIV/0!"
With Sheets("Tabelle1")
If WorksheetFunction.CountIf(.Cells, FW) > 0 Then
For Each Z In .Cells.SpecialCells(xlCellTypeFormulas, 16) ' nur Zellen mit Fehler
If InStr(Z.Text, FW) > 0 Then
Z.FormulaR1C1 = "=IFERROR(" & Mid(Z.FormulaR1C1, 2) & ",0)"
End If
Next
Else
MsgBox "Keine Fehler gefunden"
End If
End With
End Sub
LG UweD
Anzeige
AW: update..
12.02.2021 10:10:02
Spitzbube
Hallo Uwe,
super, dein Ansatz hat mich weitergebracht! Ich habe den Code für mich "vereinfacht", da ich in jeder ausgewählten Zelle, unabhängig ob dort ein Fehler auftaucht, die Formel nachfügen möchte. Der Code sieht so aus:
Sub WENNFEHLER()
Dim Zelle As Range
For Each Zelle In Selection.SpecialCells(xlCellTypeFormulas)
Zelle.Formula = "=IFERROR(" & Mid(Zelle.Formula, 2) & ",0)"
Next
End Sub
Vielen Dank und Gruß! :)
AW: update..
12.02.2021 10:13:07
Oberschlumpf
...dann is ja allet juut...
Danke für die Rückmeldung (owT)
12.02.2021 10:14:01
UweD
AW: WENNFEHLER-Formel als Makro
12.02.2021 09:24:13
Oberschlumpf
Hi,
angenommen, in B1 steht die Formel...
=WENNFEHLER("irgendeine Formel",0)

...dann dieser Code:

Range("B1").Value = "" 'Formel wird gelöscht, weil nicht mehr benötigt
If alteFormelAusZelleB1 = falsches Ergebnis Then
Range("B1").Value = 0
End If

Hilfts?
In B1 steht bei dir gar keine Formel, und du weißt nicht, meinen Code anzupassen?
Tja, ich (wir) können nicht wissen, in welchen Zellen in deiner Datei welche Formeln stehen, wenn du uns darüber nix erzählst.
Zeig bitte per Upload eine Bsp-Datei mit =WENNFEHLER-Formeln, in denen zur Zeit noch #DIV/0! als Ergebnis angezeigt wird.
Ciao
Thorsten
Anzeige
AW: WENNFEHLER-Formel als Makro
12.02.2021 10:03:30
Spitzbube
Hallo Thorsten,
Danke für deinen Ansatz. Allerdings möchte ich die Zelle nicht mit "0" überschreiben, wenn der Fehler auftritt, sondern die Formel in der Zelle um die WENNFEHLER-Funktion erweitern. Bspw. steht in Zelle B1 = RUNDEN((750-I44)*J46/1500;0). Diese Formel will ich zu B1 = WENNFEHLER(RUNDEN((750-I44)*J46/1500;0);0) erweitern und zwar so, dass ich alle Zelle, auf die das zutrifft, markiere und dann das Makro ablaufe. Habe sowas schonmal für die RUNDEN-Funktion gebastelt, das so dann so aus:
Sub RUNDEN()
Dim Zelle As Range
For Each Zelle In Selection.SpecialCells(xlCellTypeFormulas)
Zelle.Formula = "=Round(" & Mid(Zelle.Formula, 2) & ",0)"
Next
End Sub
Allerdings schaffe ich es nicht das selbe Vorgehen auf die WENNFEHLER-Funktion zu adaptieren.
Hast du dafür noch einen Ansatz?
Anzeige
AW: WENNFEHLER-Formel als Makro
12.02.2021 10:07:17
Oberschlumpf
Hi,
hast du eine Bsp-Datei MIT genügend Bsp-Zeilen?!
(warum wird der Teil, den ich erbitte, fast immer wieder übersehen?!)
Ciao
Thorsten
AW: WENNFEHLER-Formel als Makro
12.02.2021 10:13:11
Daniel
Hi
was klappt denn nicht?
du musst doch nur das "Round" durch "IfError" ersezten.
der hintere Teil der Formel ist sogar gleich.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige