Formelzuordnung an eine Variable als allgemeines VBA Lösungstool
#21
Hallo,

die englische Übersetzung ist ja auch falsch. Mit ActiveCell arbeiten ist auch gefährlich. Für B1 würde der Code so lauten:

Code:
ActiveCell.FormulaR1C1 = "=LEN(LOOKUP(9^9,--LEFT(9&RC[-1],COLUMN(R[] ) ) ) )-1"
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#22
Hallo Sotaros,

da ist nicht nur die Länge falsch, sondern auch die Semikola.... Schaue mal genau in meine codezeile und vergleiche die mit Deiner.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#23
Hallo Andre,

dank Deiner geduldige Hilfe weiß ich nun was falsch war. Da das gesamte Thema für mich sehr wichtig ist noch eine letzte Frage an Dich:
Code:
'Englische Version funktioniert:
Debug.Print Application.Evaluate("LEN(LOOKUP(9^9,--LEFT(9&A1,COLUMN(1:1 ) ) ) )-1")
'Deutsch so gehts nicht:
Debug.Print Application.Evaluate("LÄNGE(VERWEIS(9^9;--LINKS(9&A1;SPALTE(1:1 ) ) ) )-1")

Muss ich die Formel immer ins Englische übersetzen um mit Evaluation arbeiten zu können oder gibt
es noch einen Trick, dass auch eine Formel auf Deutsch verwertet wird?
Top
#24
Hallo sotaros,

geht leider nur im englischen. Ich könnte mir aber vorstellen, das man die Übersetzung mit einer Funktionsübersicht automatisieren kann.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#25
Nichts ist leichter, als eine lokale Formel komplett in US-Original-Notation darzustellen, Sotaros;
trage sie auf Deutsch in eine passende Zelle des Blattes ein und frage mit einer UDF die Original­fassung ab:
Code:
Function GetFormula(Bezug As Range, Optional Form As Integer)
    Select Case Form
        Case 0:    GetFormula = Bezug.Formula
        Case 1:    GetFormula = Bezug.FormulaLocal
        Case 2:    GetFormula = Bezug.FormulaR1C1
        Case 3:    GetFormula = Bezug.FormulaR1C1Local
        Case 4:    GetFormula = "{" & Bezug.FormulaArray & "}"  'liegt nur im Original vor!
        Case Else: GetFormula = CVErr(xlErrNA)
    End Select
End Function
Das gilt auch für benannte Formeln (allerdings werden relative Adressen dann an die UDF-Stand­ort­zelle angepasst, was ausgeglichen werden muss), wobei die hier nicht berücksichtigt sind. Für Formeln in Gültigkeits­bedingungen und in Regeln des Bedingten Formats, die beide offiziell nur lokal vorliegen, ist es etwas (evaluierbar) komplizierter… :21:
Gruß, Castor
Top
#26
Hallo liebe VBA Experten,

die Übersetzungsidee von Castor könnte ich super für meine Büroarbeit gebrauchen. Leider habe ich noch nicht einmal eine Ahnung davon
was eine UDF-Stand­ort­zelle ist. Wer kann mir den angegebenen Code von Castor fertigschreiben. Ich würdet mir einen großen Gefallen tun.

Last but not least: Geht es auch umgegehrt? Eine Formel aus dem Englischen ins Deutsche übersetzen?
Auch daran bin ich natürlich brennend interessiert.
Top
#27
Hallo,

der code von castor sollte fertig sein. UDF = UserDefinierteFunktion. Relative Adressen werden in Bezug auf die Adresse angegeben, in der die UDF aufgerufen wird.

Das Tool ist ja kein Übersetzungstool, sondern gibt eine in einer Zelle vorhandene Funktion in den verschiedenen "Excel-Formaten" aus. Wenn Du im deutschen Excel eine Formel in Englisch in die Zelle bekommst, sollte es also gehen. Ich schaff das jedoch nicht Sad Wenn Du aber im englischen Excel was hast und das im deutschen öffnest, dann bekommst Du die Formeln automatisch übersetzt.

Siehe dazu mein Hinweis von gestern, 16:14 Uhr.
oder google nach Microsoft "Ändern der Standardsprache für Office-Programme"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#28
André hat ja schon „UDF“ übersetzt, deshalb nur noch soviel:
1. Die UDF-Standortzelle ist die Zelle, in der die UDF als Formel notiert wird. Steht nun also in A1 irgendeine lokal (hier deutsch) notierte Formel und man schreibt in B1 die Formel =GetFormula(A1) erhält man die Formel in A1 in US-Original-Notation (englisch). Mit Angabe des optionalen 2.Arguments als 1…4 erhält man dann die anderen Varianten. Dabei werden auch relative Adressen in der Formel in A1 original wiedergegeben.
2. Wollte man auch benannte Formeln, also Formeln, die nur im Namensmanager eingetragen und dort mit einem Namen versehen wurden, auf diese Weise darstellen, müsste die gezeigte UDF erst dementsprechend erweitert werden. Würde man dann diese erweiterte UDF genauso wie die gezeigte in einer Zellformel einsetzen, würde eine Besonderheit des Namen­managements von Xl bzgl Verwendung von Namen in Formeln wirksam → relative Adressen werden an den Standort (Zelle) der den Namen verwendenden Formel angepasst. Das Gleiche passiert, wenn man das in Xl integrierte Tool zur Wiedergabe aller Namen und ihrer Inhalte benutzt. Das ist im normalen Namens­gebrauch auch sehr sinnvoll und kann deshalb nicht geändert, nur berücksichtigt und ausgeglichen werden. Bei Formeln in der Gültigkeit ist das ebenso, nur ist (bei lokalem Xl) ihre Darstellung in US-Notation etwas komplizierter (es war bis Xl11 auch bei Formeln der Bedingten Formatierung der Fall, ab Xl12/2007 nicht mehr, da Anpassungen nur noch intern erfolgen).
3. Auch das hat André bereits erwähnt, das ist kein Übersetzungs-, nur ein Darstellungstool! Wenn man eine englisch­sprachige XlVariante verwendet, ist die lokale Formel­form mit der Original­form identisch (das gilt höchst­wahrscheinlich auch für eine französische XlVersion), man kann also so keine x-beliebige lokale Notations­form erhalten (die „Übersetzung“ ist also quasi eine Einbahn­straße!). Dafür würde dann tatsächlich ein Übersetzungs­programm benötigt, dass auch die jeweilige lokale Standard-Zeichen­setzung berücksichtigt (individuell vereinbarte Zeichen können idR keine Berücksichtigung finden!).
Gruß, Castor
Top
#29
Hi Castor,

(30.10.2014, 19:09)Castor schrieb: André hat ja schon „UDF“ übersetzt, deshalb nur noch soviel:

Deine beiden Beiträge sind echt klasse. Willst Du die vielleicht in einen zusammenfassen und bei "Beispiele und Workshops" reinsetzen?

Ich finde, das absolut würdig, das dort zu haben und dann später wieder einfacher zu finden.
Top
#30
Eine Möglichkeit gibt's allerdings doch noch für den umgekehrten Weg, allerdings auch nur mit einer lokalen Xl-Variante. Aber das ergibt sich eigentlich schon aus dem Hauptthema dieses Threads:
Wenn eine Formel in US-Notation vorliegt, trägt man sie mit VBA in .Formula (bzw .FormulaR1C1) einer Zelle ein und kann sie dann mit GetFormula(…;1) bzw GetFormula(…;3) in lokaler Form auslesen. Aber das hatte ich andersherum ja schon in meinem 1.Beitrag geschrieben. Whistle
Castor
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste