Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
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

Excelformeln in VBA überführen

Excelformeln in VBA überführen
14.07.2016 15:00:29
flw201
Hallo zusammen,
ich habe ein bisschen recherchiert und würde gerne hier meine Problemstellung präsentieren. In 30+ bereits bestehenden Tabellen möchte ich bestimmte Vergleiche durchführen. Im Wesentlichen könnte ich es mit IF realisieren, aber ich darf die Tabellen nicht mit neuen Formeln versehen.
D4 =IF(B4>0;"Nein";"")~f~
E4 ~f~=IF(B4>=$B$1;"Ja";"Nein")~f~
F4 ~f~=IF(E4="Ja";A4;"N/A")
Daher würde ich gerne eine VBA Lösung erstelle, nur mit dem Makrorecorder kriege ich es nicht hin. Könnt ihr mir Hinweise geben oder einen Rahmen, auf dem ich aufbauen kann?
LG

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excelformeln in VBA überführen
14.07.2016 15:33:34
UweD
Hallo
meinst du das?

With Sheet("Tabelle1")
TestD4 = IIf(.Range("B4") > 0, "Nein", "")
TestE4 = IIf(.Range("B4") >= .Range("B1"), "Ja", "Nein")
TestF4 = IIf(.Range("E4") = "Ja", .Range("A4"), "N/A")
End With
Gruß UweD

AW: Excelformeln in VBA überführen
14.07.2016 16:17:34
flw201
Hallo UweD,
in etwa, natürlich wollte ich niemanden erschlagen, aber ich muss es auf zwei Blöcke von Zeilen anwenden.
Bisher ist mein Stand folgender, der aber nicht funktioniert, weil "Sub or Function not defined"
Sub Test()
With Sheet("Sheet1")
D4 = IIf(.Range("B4") > 0, "Nein", "")
E4 = IIf(.Range("B4") >= .Range("B1"), "Ja", "Nein")
F4 = IIf(.Range("E4") = "Ja", .Range("A4"), "N/A")
End With
End Sub

Anzeige
AW: Excelformeln in VBA überführen
14.07.2016 17:32:14
Werner
Hallo,
Sub Test()
With Sheet("Sheet1")
.Range("D4") = IIf(.Range("B4") > 0, "Nein", "")
.Range("E4") = IIf(.Range("B4") >= .Range("B1"), "Ja", "Nein")
.Range("F4") = IIf(.Range("E4") = "Ja", .Range("A4"), "N/A")
End With
End Sub
Gruß Werner
AW: Excelformeln in VBA überführen
15.07.2016 09:30:00
flw201
Danke für deine Antwort. Leider wird mir damit immer noch "Sub or Function not defined" angezeigt. Liegt es vielleicht an meinem englischen Windows7Excel?
AW: Excelformeln in VBA überführen
15.07.2016 09:43:40
UweD
With Sheets("Sheet1")
AW: Excelformeln in VBA überführen
15.07.2016 08:34:16
UweD
Hallo nochmal
du hast geschrieben:
möchte ich bestimmte Vergleiche durchführen... ...aber ich darf die Tabellen nicht mit neuen Formeln versehen.
Das heißt für mich, die Berechnung (Auswertung) muss innerhalb VBA erfolgen und es werden keine Werte oder Formeln in die Tabellen eingetragen.
Deshalb hatte ich Variable mit den Ergebnissen versehen, die du dann natürlich interpretieren musst..
Eventuell stellst du mal eine Mustermappe hier ein und beschreibst genauer, wie du mögliche "Ergebnisse" angezeigt bekommen möchtest.
Gruß UweD
Anzeige
AW: Excelformeln in VBA überführen
15.07.2016 09:21:54
flw201
Hallo UweD,
danke für deine Antwort, bitte entschuldige, wenn ich mich missverständlich oder undeutlich ausgedrückt habe. Ich lade eine verkürzte beispielhafte Tabelle hoch. In meinen Tabellen habe ich circa 80 Zeilen in mehreren Blöcken zu prüfen.
Ich bin gerne bereit mich einzuarbeiten. "Deshalb hatte ich Variable mit den Ergebnissen versehen, die du dann natürlich interpretieren musst.." verstehe ich leider nicht.
https://www.herber.de/bbs/user/107025.xlsm
AW: Excelformeln in VBA überführen
15.07.2016 09:39:40
UweD
Hi
du darfst KEINE neuen Formeln einfügen
- wie möchtest du denn was prüfen?
- Was steht vorher in der Tabelle?
- Wie soll die Info über die Prüfung erfolgen ? Zeilenweise als Messagebox?
- Oder sollen in den beiden Prüfspalten nachher keine Formeln, sondern die Ergebnisse der Formeln stehen?
Mir ist nicht klar, was du machen möchtest.
Anzeige
AW: Excelformeln in VBA überführen
15.07.2016 09:54:25
flw201
Hi,
also ich versuche alle Fragen zu beantworten:
Also in der Tabelle sind nur die Spalten A und B gefüllt. Für die restlichen Spalten bestehen die Header, in den jeweiligen Zeilen sind teils Werte, die kann ich aber überschreiben.
Am Ende würde ich gerne anstatt von Formeln nur die Werte stehen haben.
AW: Excelformeln in VBA überführen
15.07.2016 10:07:26
UweD
dann so..
Sub Test()
    With Sheets("Sheet1")
        Dim i&, LR&
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
        For i = 4 To LR
            If .Cells(i, 1) <> "" Then
                .Cells(i, 3) = IIf(.Cells(i, 2) > 0, "Nein", "")
                .Cells(i, 4) = IIf(.Cells(i, 2) > 0, "Nein", "")
                .Cells(i, 5) = IIf(.Cells(i, 2) >= .Cells(1, 2), "Ja", "Nein")
                .Cells(i, 6) = IIf(.Cells(i, 5) = "Ja", .Cells(i, 1), "N/A")
            End If
        Next
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß UweD
Anzeige
AW: Excelformeln in VBA überführen
15.07.2016 10:44:30
flw201
Wow, danke, funktioniert! Sehr lehrreich. Eine Frage mit zwei Unterfragen habe ich noch:
Wenn ich eine zweispaltige Liste mit Sonderfällen habe bzgl.

.Cells(i, 6) = IIf(.Cells(i, 5) = "Ja", .Cells(i, 1), "N/A")
, kann ich es dann auch eleganter schreiben, als jeden Sonderfall verschachtelt via IIf zu prüfen?

.Cells(i, 6) = IIf(.Cells(i, 5) = "Ja", IIf(.Cells(i, 1) = "Delta", "Delta-Sonderfall", .Cells(i, 1)), "N/A")

Die Vergleichswerte würde ich einer separaten geöffneten Tabelle haben. Kann ich darauf auch zugreifen, sodass in der Tabelle "DATEN.xls" die Spalte A durchlaufen wird und dann aus Spalte B der Wert eingetragen wird, und wenn dort nichts steht, dann halt .Cells(i, 1)?
Anzeige
AW: Excelformeln in VBA überführen
15.07.2016 11:45:32
UweD
Hi
Das wird mir jetzt zu kompliziert.
Ich würde das anders angehen.
zur Vorbereitung:
- schreibe einmal in die Zellen in Zeile 4 alle Formeln so rein,
. . . so wie du haben möchtest.
. . . also auch mit den Bezügen zu anderen Tabellen oder Mappen
- da du Leerzeilen verwendest, würde ich noch eine Abfrage danach in der Formel ergänzen
. . .Wenn(A4"";Deine Formel;"")
- da dein Tabellenblatt "Sheet1" heißt, gehe ich von einer englischen Version aus.
= d.h. du kannst die Formeln der einzelnen Zellen in dem Makro so reinkopieren
= du musst aber noch alle " in den Formeln verdoppeln ( aus " wird "" / aus "" wird """")
Vorbereitung Ende
- dann kannst du das Makro so, wie abgebildet verwenden.
= die Formeln werden in Zeile 4 eingetragen,
= bis nach unten kopiert
= und dann in Werte umgewandelt
OK?
Sub Test()
    With Sheets("Sheet1")
        Dim i&, LR&
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
        .Range("C4:D4").Formula = "=IF($A4<>"""",IF($B4>0,""Nein"",""""),"""")"
        .Range("E4:E4").Formula = "=IF(B4>=$B$1,""Ja"",""Nein"")"
        .Range("F4:F4").Formula = _
            "=IF(E4=""Ja"",IF(A4=""Bravo"",""BravoX"",if(A4=""Delta"",""DeltaY"",A4)),""N/A"")"
            
        .Range("C4:F4").AutoFill Destination:=.Range("C4:F" & LR) ' nach unten kopieren 

        With .Range("C4:F" & LR)
            .Value = .Value 'Formeln in Werte 
        End With
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige