Microsoft Excel

Herbers Excel/VBA-Archiv

Gleichheitszeichen vor einer Formel

Betrifft: Gleichheitszeichen vor einer Formel von: Dirk
Geschrieben am: 16.07.2020 15:04:18

Hallo,
ich habe ein kleines Problem.
Ich habe in einer Spalte Zahlen (Bsp. 10,70) und Formeln (Bsp. 5,20+1,25) stehen, ohne dass davor ein Gleichheitszeichen steht.
Ich möchte jetzt jeweils davor ein Gleichheitszeichen setzen. Da die Spalte relativ lang ist, möchte ich dies nicht händisch tun. Ich habe hierfür ein kleines Makro geschrieben.
Dies funktioniert allerdings nur bei den Zahlen. Bei den Formeln wird leider kein Gleichheitszeichen davor gesetzt.
Hier sollte aber auch ein Gleichheitszeichen davor, sodass die Summe der Formel gebildet wird.
Vielleicht kann mir von euch jemand helfen, das wäre klasse. Schon mal vielen Dank

Sub IstGleichEinfuegen()
Dim zelle As Range
Sheets("Tabelle1").Select
Columns("C:C").Select
Dim rngZelle As Range

For Each rngZelle In Selection
If rngZelle <> "" And IsNumeric(rngZelle) Then
rngZelle.FormulaLocal = "=" & rngZelle.Value
End If
Next
End Sub

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: peterk
Geschrieben am: 16.07.2020 15:10:15

Hallo

"5,20+1,25" ist ein Text und somit liefert IsNummeric "false"

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 15:15:31

Ok verstanden, hilft mir aber noch nicht viel weiter.
Was muss ich dann nehmen, dass es funktioniert bzw. wie muss das Makro dann aussehen?

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: peterk
Geschrieben am: 16.07.2020 15:30:08

Hallo

Probier mal

Sub IstGleichEinfuegen()
   Dim zelle As Range
   Sheets("Tabelle1").Select
   Columns("C:C").Select
   Dim rngZelle As Range
 
   For Each rngZelle In Selection
     If rngZelle <> "" And not rngZelle.hasformula Then
       rngZelle.FormulaLocal = "=" & rngZelle.Value
     End If
   Next
 End Sub



Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 15:39:37

Hallo Peter,
funktioniert bei mir leider nicht

If rngZelle <> "" And Not rngZelle.HasFormula Then

Laufzeitfehler 13: Typen unverträglich

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: peterk
Geschrieben am: 16.07.2020 15:56:03

Hallo

Hast Du ein Datum/Uhrzeit in der Spalte?

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 15:59:29

Es stehen vereinzelt Wörter oder auch mal ein Fragezeichen oder auch z.B. mal Pak.12.04.(7) in den Zellen

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: peterk
Geschrieben am: 16.07.2020 16:07:46

Hallo

Wie soll das System erkennen welche Zellen in eine Formel umgewandelt werden sollen?

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 16:37:20

Wenn ein Zelle mit einer Zahl beginnt, dann sollte ein Gleichzeichen davor.
Bei allen anderen Sonderzeichen oder Namen kein Gleichzeichen setzen

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Daniel
Geschrieben am: 16.07.2020 15:18:20

Hi
das geht auch von Hand schnell:

1. in eine Nachbarspalte die Formel eintragen: ="="&C1 und nach unten ziehen.
2. diese Spalte kopieren und an gleicher Stelle als Wert einfügen
3. in dieser Spalte das "=" durch "=" ersetzen.

beim Ersetzen von Werten prüft Excel wie bei einer Neueingabe, ob die Werte Formel, Zahl, Datum oder Text sind und wandelt entsprechen um.

Gruß Daniel

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 15:30:43

Hallo Daniel,
vielen Dank für die schnelle Antwort. Dies hilf mir bei einer Spalte schnell weiter.
Ich habe allerdings nicht nur eine Spalte sondern relativ viele Spalten und es stehen nicht in jeder Zeile auch was drin. So müsste ich Spalte für Spalte dies machen und bei den Leerzeilen dann das Gleichheitszeichen rauslöschen. Wäre eine Möglichkeit.
Vermutlich hilf da aber ein Makro schneller weiter

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Daniel
Geschrieben am: 16.07.2020 15:45:24

Hi
du kannst die Formeln erweitern mit: =wenn(C1="";"";"="&C1)
wenn es mehrere Spalten sind, die direkt nebeneinander liegen, kannst du die Formel in der Hilfsspalte nicht nur nach unten, sondern auch nach rechts ziehen und dann den ganzen Block bearbeiten.
Gruß Daniel

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 16:05:46

Generell nicht schlecht deine Idee. Da ich aber in den Zellen auch Wörter und Sonderzeichen habe, gibt es beim Ersetzen ein Problem sobald ein Wort kommt

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Werner
Geschrieben am: 16.07.2020 16:11:05

Hallo,

wenn da keine Werte in der Zelle stehen, die mit einer Zahl beginnen, gefolgt von Text oder Sonderzeichen, dann vielleicht so:
Sub IstGleichEinfuegen()
Dim i As Long

With Worksheets("Tabelle1")
    For i = 1 To .Cells(.Rows.Count, "C").End(xlUp).Row
        If .Cells(i, "C") <> "" Then
            If IsNumeric(Left(.Cells(i, "C"), 1)) Then
                .Cells(i, "C") = "=" & .Cells(i, "C")
            End If
        End If
    Next i
End With

End Sub
Gruß Werner

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Daniel
Geschrieben am: 16.07.2020 16:14:59

dann über Inhalte-Auswählen (F5) die mit Formel und Fehler selektieren und dort wieder das Gleichheitszeichen durch nichts ersetzen.
Achtung, es müssen mindestens zwei Zellen sein, bei nur einer betroffenen Zelle mach die Korrektur direkt in der Bearbeitungszeile, nicht mit Ersetzen.
Das Ersetzen geht auf alle Zellen, wenn nur eine Zelle ausgewählt ist.
Nur bei einer Auswahl von zwei oder mehr Zellen werden nur die ausgewählten Zellen bearbeitet.

Gruß Daniel

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Daniel
Geschrieben am: 16.07.2020 16:18:15

Hi
per Marko am besten so, hier wird vorab geprüft, ob der Inhalt als Formel darstellbar ist und nur dann wird die Ersetzung durchgeführt:
Sub ZahlUndBerechnungInFormel()
Dim Zelle As Range
Dim txt As String, txt2 As String
Dim Check
For Each Zelle In Selection.SpecialCells(xlCellTypeConstants, 3)
    txt = Zelle.FormulaLocal
    txt2 = Replace(txt, ",", ".")
    Check = Evaluate(txt2)
    If VarType(Check) = vbDouble Then Zelle.FormulaLocal = "=" & txt
Next
End Sub
da das Evaluate einen englischen Formeltext braucht, funktioniert das nur mit Formeln, die im Deutschen und Englischen gleich sind (mal abgesehen vom Dezimalzeichen, das wird getauscht), dh nur mit einfachen Rechenoperationen (+-*/) aber nicht mit Funktionen.

Gruß Daniel

Betrifft: AW: Gleichheitszeichen vor einer Formel
von: Dirk
Geschrieben am: 16.07.2020 16:42:58

Hallo Daniel,
Perfekt, genau das was ich gebraucht habe. Vielen Dank

Vielen Dank auch an alle anderen, die mir so schnell geantwortet haben.
Einfach ein klasse Forum, wo einem schnell geholfen wird.

Wünsch euch noch einen schöne Tag
Gruß Dirk

Beiträge aus dem Excel-Forum zum Thema "Gleichheitszeichen vor einer Formel "