Habe in Spalte (A1:A20)verschiedene Formel(nicht wichtig).
//Bei Spalte B „B1:B20“ habe ich Symbole bzw. Buchstaben welche in der Formel vorkommen (D,o’,alfa etc)//
//bei Spalte C „C1:C20“ beschreibe ich was die Symbole bedeuten z.b FF steht für Federkraft etc.//
wie kann ich jetzt also in jeder Zeile in Spalte C „z.B C6 oder C20“ eine Formel anwenden die,welche überprüft ob das Symbol in „bzw in B6 oder B20“ gleich einer andere „B1-B5, B7:B19“ ist und dann den text auch kopiert von dieser Zeile?!! Schwierig zum Erklären xD
A1 habe ich f=a*m, in B1 habe ich f= in b2 a= etc.,in C1 habe ich „Kraft“ in C2 habe ich „Beschleunigung“ jetzt kommt bzw bei B6 nochmal f= dann möchte ich das C6 auto. „Kraft“ reinschreibt.
Bsp (geht sicher nicht):=wenn(B1:B20(einer von 19)=B6;Cx(gefunder Bereich bzw. B7);""(sonst kein wert))
Puh, Du hast recht, das ist schwierig zu erklären und noch schwieriger zu verstehen. Also wenn ich es kapiert habe willst Du Zellen bzgl. Inhalt, Formel, Eigenschaft, … miteinander vergleichen?
Dazu (Programmierkenntnisse in VBA vorausgesetzt): Man kann auf jede Zelle schreibend und lesend zugreifen, z.B.: [Sheets(…).]Cells(row,col).xxx
[Sheets(…).] ist eine optionale Qualifizierung.
xxx spezifiziert, was von der Zelle gemeint ist, z.B.:
fehlt: Inhalt
InteriorColorIndex: Farbe
Formula: Formel
…
Also: eine Vergleichsschleife über alle relevanten Zellen (resp. Zeilen und Spalten) und entsprechende Zuweisungen.
Alles klar? Viel Erfolg
Rainer
ich kann dir leider dabei nicht helfen, weil ich gar nicht richtig verstehe, was du haben möchtest.
Das ist ja schön kompliziert, aber eine Function bietet da zumimdest Hilfe:
Option Explicit
Function Teile\_Formel(Formel As String, JumpChar As Double)
Dim CheckChar As String
CheckChar = Mid(Formel, JumpChar + 1, 1)
Select Case CheckChar
Case "a"
Teile\_Formel = "a = Beschleunigung"
Case "e"
Teile\_Formel = "e = Energie"
Case "N"
Teile\_Formel = "N = Kraft"
Case "t"
Teile\_Formel = "t = Zeit"
Case "T"
Teile\_Formel = "T = Temperatur"
Case Else
Teile\_Formel = " "
End Select
End Function
wenn also deine Formel in A1 steht gibst du in der Berechnungszelle ein:
=Teile_Formel($A1;0)
Wobei das 0 heißt, dass ich 0 Zeichen der Formel überspringe.
Um das 4 Zeichen der Formel zu analysieren heißt es dann =Teile_Formel($A1;3)
3, weil drei Zeichen übersprungen werden…
Die Case-Liste musst du natürlich anpassen.
das kanN ich dann in so viele Spalten einfügen, wie die Formel Zeichen hat (mit den Rechenzeichen etc.). Und dann diese Zellen zusammenfassen z.B. in A9 = A2 & A3 & A4 & A5…
Hallo,
tut mir leid, aber deine Erklärung kann ich nicht nach voll ziehen.
Hans-Otto
Hallo
Du möchtest deine Symbole durch Texte ersetzen. Das geht sicherlich. Allerdings musst du dazu mehrere Zellen verwenden.
Du hast in den Spalten B Symbole und in der Spalte C die dazugehörigen Texte eingegeben. Somit besteht schon ein Zusammenhang von Texten und Symbolen, die du mit „SVerweis“ herstellen kannst, das heisst du suchst in der Spalte B nach einem Symbol und erhällst aus der Spalte C den dazugehörigen Text.
Nun zur Formel.
Sicherlich ist für dich auch das Ergebnis wichtig, welches du über eine „normale“ Formel relativ einfach errechnen kannst (in A1 "=b1*C1)
Aber dein Problem schein die Einbundung der Texte in die Formel zu sein. Dazu müssen wir uns von der Berechnung wie wir sie kennen lösen. Wir rechnen dann nicht mehr, sondern fügen Texte und Symbole zusammen.
Schreibe dazu deine Formel noch einmal beginnend mit der Spalte D folgendermaßen auf (D1"b1",E1"=";F1"c1").
Nun kannst du in d2 bzw. f2 mit SVerweis die Texte aus der Spalte c1:c20 auslesen lassen und in einer weiteren Spalte zusammenfügen. Dies geschied relativ einfach mit =d2&E2&F2(hier ist das Pluszeichen durch das kaufmännische Plus ersetzt).
Ich hoffe dir geholfen zu haben und viel Spass beim probieren.
Gruss Horst
Tut mir leid. Ich würde gerne helfen, verstehe aber überhaupt nicht, was Du möchtest. Ich kann verstehen, dass es Dir nicht leicht fällt, Deinen Wunsch zu erklären. Du kannst aber doch nicht von anderen verlangen, dass die sich auch noch beim Entschlüsseln Deines Wunsches den Kopf zerbrechen müssen. Ich hätte zumindest ein einigermassen fehlerfreies Deutsch erwartet. Z.B. „bei Spalte C“ soll wahrscheinlich „in Spalte C“ heissen.
„xD A1 habe ich f=a*m“ soll vielleicht „z.B. in Zelle A1 steht f=a*m“ heissen. usw.
Gruss
Habe es ausprobiert schaffe es irgendwie nicht, mit Excel Version 2007. Soll ich dir mal die Excel-Datei schicken oder kann man die irgendwie binden auf dieser Seite?
Das liegt bestimmt nicht an der Excel-Version. Das funzt seit Office97 ! heute (Office10) noch
Da hast wohl eher Du nicht die ausreichenden Kenntnisse.
Datei schicken ist nicht. Hier im Board sollen wir anonym bleiben können. Und es ist für Tipps da, nicht für ganze Programmierungen. Sorry.
Nochmals zum Mitschreiben:
Geh in den VBA-Editor (Alt F11)
füge ein Modul ein
Kopiere den Text (Function) in das Modul
geh zurück auf deine Tabelle
deine Formel steht z.b. in A1
den Ersten Buchstaben willst du in G1 erläutert haben
dann in G1 folgende Zeile eigeben
=Teile\_Formel($A1;0)
in H2 den 3. Buchstaben (2. ist event. das =):
=Teile\_Formel($A1;2)
in I1 den 4.
=Teile\_Formel($A1;3)
und in N1 fasst du alle Zusammen
=G1 & H1 & I1
So, mehr Hilfe ist leider nicht.
Vielen Dank für die Hilfe
!
Ich bin villeicht nicht gerade ein Superheld in VBA aber soweit bin ich auch schon gekommen… Ich möchte auch Symbole wie Δ ς oder sin(α) im Modul gebrauchen! Mit Copy/Paste geht das natürlich nicht darum habe ich folgendes probiert(siehe unten) geht aber irgendwie nicht xD(O für ΔL):
Option Explicit
'Function Teile_Formel(Formel As String, JumpChar As Double)
'Dim CheckChar As String
Sub wasistdas()
Dim testchar As String
testchar = Worksheets(„Tabelle1“).Range(„E5“)
testchar1 = StrConv(testchar, 3)
MsgBox testchar1
’ CheckChar = Mid(Formel, JumpChar + 1, 1)
'Select Case CheckChar
’ Case „m“
’ Teile_Formel = „m = Masse“
’ Case „V“
’ Teile_Formel = „V = Volumen“
’ Case „g“
’ Teile_Formel = „g = Erdbeschleunigung“
’ Case „x“
’ Teile_Formel = „x = Auslenkung“
’ Case „D“
’ Teile_Formel = „F = Federkonstante“
’ Case „O“
’ Teile_Formel = „t = Längenänderung“
’
’ End Select
End Sub
’
’ Sub t()
'With Worksheets(„Tabelle1“)
’ .Font.Name = „Arial Unicode MS“
’ .Value = ChrW(962)
'End With
'End Sub
’ End Sub
Vielen Dank für die Hilfe
!
Ich bin villeicht nicht gerade ein Superheld in VBA aber soweit bin ich auch schon gekommen… Ich möchte auch Symbole wie Δ ς oder sin(α) im Modul gebrauchen! Mit Copy/Paste geht das natürlich nicht darum habe ich folgendes probiert(siehe unten ab sub) geht aber irgendwie nicht(nätürlich t als variabel deklarieren und keine ') xD(O für ΔL):
Option Explicit
'Function Teile_Formel(Formel As String, JumpChar As Double)
'Dim CheckChar As String
Sub wasistdas()
Dim testchar As String
testchar = Worksheets(„Tabelle1“).Range(„E5“)
testchar1 = StrConv(testchar, 3)
MsgBox testchar1
’ CheckChar = Mid(Formel, JumpChar + 1, 1)
'Select Case CheckChar
’ Case „m“
’ Teile_Formel = „m = Masse“
’ Case „V“
’ Teile_Formel = „V = Volumen“
’ Case „g“
’ Teile_Formel = „g = Erdbeschleunigung“
’ Case „x“
’ Teile_Formel = „x = Auslenkung“
’ Case „D“
’ Teile_Formel = „F = Federkonstante“
’ Case „O“
’ Teile_Formel = „t = Längenänderung“
’
’ End Select
End Sub
’
’ Sub t()
'With Worksheets(„Tabelle1“)
’ .Font.Name = „Arial Unicode MS“
’ .Value = ChrW(962)
'End With
'End Sub
’ End Sub
Beispiel-Code:
Sub Zelle()
With Worksheets("Tabelle1").Cells(1, 1)
.Font.Name = "Arial"
.Value = ChrW(962)
End With
End Sub
Sub Lese()
MsgBox (AscW(Worksheets("Tabelle1").Cells(1, 1)))
End Sub
Schreibt das Zeichen in eine Zelle und liest das Zeichen aus einer Zelle.
Aus
CheckChar = Mid(Formel, JumpChar + 1, 1)
wird
CheckChar = AasW(Mid(Formel, JumpChar + 1, 1))
Dann kannst Du auch exotische Zeichen abfragen.
Okey von vorne :
A1 steht Y
B1 steht *
C1 steht ΔL
D1 steht =
E1 steht z
Erläuterung der Symbole
F1(Eintrag : =Teile_Formel(A1;0)) steht Y= Y-Koordinat
G1(") steht nichts Operatoren weg lassen!
H1(")steht ΔL= Längenänderung
etc…
Mit dem :
Sub Zelle()
With Worksheets(„Tabelle1“).Cells(1, 1)
.Font.Name = „Arial“
.Value = ChrW(962)
End With
End Sub
Sub Lese()
MsgBox (AscW(Worksheets(„Tabelle1“).Cells(1, 1)))
End Sub
geht dies leider nicht! Wie würde der ganze Code ausehen damit VBA die „ΔL oder ander Symbole bzw auch Wörter wie delta“ erkennt in Erläuterung hinenschreib "ΔL= Längenänderung "?
P.S: übrigens ist Δ=ChrW(916)
Sry das ich alles sop kompliziert mache aber ich finde nirgends eine Lösung… Dake für die Mühe 
Um es nochmals klar zu stellen:smiley:as Board soll dir Tipps geben, und nicht den Programmierern die Arbeit wegnehmen…
Derart umfangreiche Geschichten gehören eigentlich in die Hand eines erfahrenen Programmierers.
Also
- mein bisheriges Tool kann nur einzelne Buchstaben auswerten, ganze Wörter geht nicht.
- VBA kann auch eigentlich nur den ASCII-Zeichensatz.
- ist es durchaus möglich alles in eine entsprechende VBA- Programmierung zu packen, aber:
Dann erfolgt keine Automatische Berechnung mehr, wenn sich Daten ändern. Man muss zusätzlich einen Button Programmieren, der die Berechnungen auslöst.
Aber ich versuch mal dir eine Krücke an die Hand zu geben.
Gehen wir mal von der anderen Seite heran.
Du musst die einzelnen Faktoren/Summanden/etc. der Formel jeweils in eine eigene Zelle der Tabelle schreiben
Du willst z.B. die Fomel Sin(ζ)\*L=ΔL erzeugen, dann steht in C1 'Sin(ζ), in D1 \*, in E1 L in F1 = und in H1 'ΔL
Übersetzung fürs Board:
Fomel Sin(ζ)*L=ΔL erzeugen, dann steht in C1 'Sin(ζ), in D1 *, in E1 L in F1 = und in H1 'ΔL ist
Du willst z.B. die Fomel Sin(Zeta)*L=DeltaL erzeugen, dann steht in C1 'Sin(Zeta), in D1 *, in E1 L in F1 = und in H1 'DeltaL
Und in A1 wird das zusammengefasst: =C1 &D1 &E1 &F1 &G1
Dann musst Du noch meinen neuen Code in ein Modul schreiben:
Option Explicit
Function Erlaeuterungen(InText As String)
Dim My\_Char(10)
Dim I As Long
Dim Check\_Char As Long
Dim Erl\_Code As String
For I = 1 To Len(InText)
Check\_Char = AscW(Mid(InText, I, 1))
My\_Char(I) = Check\_Char
Next I
For I = 1 To Len(InText)
Erl\_Code = Erl\_Code & My\_Char(I)
Next I
Select Case Erl\_Code
Case "91676"
Erlaeuterungen = ChrW(916) & "L = Unterschied in der Länge"
Case "831051104095041"
Erlaeuterungen = "Sin(" & ChrW(950) & ") = Anliegender Winkel"
Case Else
Erlaeuterungen = ""
End Select
End Function
Und in I1 steht dann =Erlaeuterungen(C1), … in M1 =Erlaeuterungen(G1)
Bei Erweiterungen des Codes beachten:
Case "91676" bedeutet Unicodezeichen 916 (Delta) gefolgt von ASCIIzeichen 76 (L)
Kompliziert, aber machbar ( bis 10 Zeichen pro Zelle weil My_Char so definiert ist und Intext länger als 10 zeichen verursacht sodann Fehler)