Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
244to248
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
244to248
244to248
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Umwandeln eines Strings (Formel) in einen Wert

Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 15:56:13
Lutz
Hallo zusammen,

folgendes Problem kann ich seit einiger Zeit nicht lösen:
In einer Zelle (z.B A1) steht ein String, der eine Formel darstellt. Beispiel: 3,02*(7,0-1,9)
Diesen String möchte ich in einen Wert umwandeln.
Hier also 15,402

In Access löst das die Funktion eval(String), wenn statt des "," ein "." als Dezimaltrennzeichen verwendet wird.

Versucht habe ich u.a. soetwas wie (in Feld A2) =A1, was aber nur den String reproduziert. Auch Tricks mit maskiertem " haben bisher nicht geholfen.

Ein Pendant zu eval für Excel habe ich bisher nicht gefunden.

Zweck der ganzen Übung ist natürlich, den Formeltext weiter angezeigt zu lassen und trotzdem in einer anderen Spalte das Ergebnis der Berechnung anzuzeigen.

Weiß jemand wie ich das lösen könnte?

Viele Grüße
Lutz

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 16:09:01
Ramses

Hallo Lutz,

probier mal folgendes:
Range("A1") = "3,02*(7,0-1,9)"
Range("B1").Formula = "=3,02*(7,0-1,9)"

Mit "formula" weist du EXCEL an, eine Formel einzusetzen, dann rechnet EXCEL auch :-)

Gruss Rainer

Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 16:14:00
ChrisL

Hallo Lutz

Versuchs mal hiermit...

Option Explicit

Sub FormelnErgebnis()
Dim Zelle As Object

For Each Zelle In Range("A1:A100")
If IsEmpty(Zelle) = False Then Cells(Zelle.Row, 2).Formula = "=" & Zelle.Value
Next
End Sub


Einträge in A1:A100, Ergebnis in B1:B100

Gruss
Chris

Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 16:33:50
GerdZ

Hallo Lutz,

da gibt es mehrere Möglichkeiten:

1) wähle im Menü: Einfügen - Namen - Definieren
Bei "Namen in der Arbeitsmappe:" gibst Du
Formel
ein.
In "Bezieht sich auf:" schreibst Du:
=AUSWERTEN(Tabelle1!$A:$A)
Dann auf OK klicken.
In A1 steht 3,02*(7,0-1,9)
In B1 (oder irgend eine andere Zelle der Zeile 1) kommt die Formel: =Formel
als Ergebnis wird in B1 dann angezeigt: 15,402

2) Du erstellst Dir eine benutzerdefinierte Funktion:
Public Function TextEval(Text As String) As Double
TextEval = Application.Evaluate(Replace(Text, ",", "."))
End Function
In eine beliebige Zelle kommt dann die Formel: =TextEval(A1)

Gruß
Gerd




Anzeige
Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 16:41:28
Lutz

Hallo Rainer (und natürlich alle anderen interessierten Leser),

das hilft ein kleines Stück weiter, löst mein Problem aber noch nicht.

Zunächstmal scheint das Problem wohl nur mit VBA lösbar zu sein. Falls es doch einen Weg gibt, dies direkt auf dem Excelsheet zu erreichen, wäre das noch besser.

Ich hab' also Range("A1")="3,02*(7,0-1,9)" ausprobiert und natürlich taucht in Feld A1 der Text 3,02*(7,0-1,9) auf.
Das zweite Beispiel wirft aber eine Fehlermeldung aus:
"Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler".

Die angegebene Formel ist natürlich nicht fix, sondern je Zeile wird von den Usern eine andere Formel eingetragen.

Wie könnte ich also folgendes Realisieren:
Range("B1").Formula= >>Stringtext aus Zelle A1<<, so dass in B1 dann der Wert steht, den die Formel aus Zelle A1 darstellt.
Range("B1").Formula= "=" & Range("A1") etwa funktioniert nicht.

Hier der Quelltext meiner kleinen Test-sub-Funktion:
Sub meier()
Dim Test As String
Range("B1") = "Meier"
Test = "=" & Range("A1")
Range("B2").Formula = Test
End Sub

Viele Grüße
Lutz


Anzeige
Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 16:45:42
Ramses

Hallo Lutz,

dann würde ich sagen, dass deine EXCEL-Umgebung kein Komma als Dezimaltrennzeichen akzeptiert sondern den Punkt.
Ersetze mal in der Anweisung wie ich sie vorhin geschickt habe, dass Komma in der Formelanweisung gegen einen Punkt.

Gruss Rainer

Re: Umwandeln eines Strings (Formel) in einen Wert
15.04.2003 17:42:17
Lutz

Supi,

herzlichen Dank an Rainer, Gerd und Chris für die kompetente und sehr hilfreiche Unterstützung. Jetzt funktionierts endlich.

@Rainer: Richtig, wenn statt "," ein "." im String steht, dann funktioniert Range("A2").Formula = "=" & Range("A1")

@Gerd: Zuerst hatte ich den Code unter 'Microsoft Excel Objekte/Diese Arbeitsmappe' bzw '.../Tabelle1' plaziert. Damit kam nur ein #Name? zurück. Aber nach dem ein eigenes Modul erstellt war, läuft nun auch die Function TextEval(String) und liefert das Ergebnis richtig zurück - insbesondere mit Umwandlung von "," in "."

Jetzt bin ich gespannt, ob sich das Verfahren auch auf einen PDA transferieren läßt. Ich vermute aber, das Pocket Excel kein VBA mag und das die Formeldefinition von Gerd ( ... = AUSWERTEN(Tabelle1!$A:$A) dem PDA ebenfalls fremd bleibt.

CU,
Lutz

Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige