Thema Datum  Von Nutzer Rating
Antwort
03.03.2019 21:32:45 Igor
NotSolved
03.03.2019 21:47:28 Ulrich
NotSolved
03.03.2019 21:53:35 Ulrich
NotSolved
04.03.2019 20:16:55 Igor
NotSolved
Rot VBA: Formeltext in Zeile anstatt Rechenergebnis anzeigen
05.03.2019 10:19:36 Ulrich
NotSolved

Ansicht des Beitrags:
Von:
Ulrich
Datum:
05.03.2019 10:19:36
Views:
390
Rating: Antwort:
  Ja
Thema:
VBA: Formeltext in Zeile anstatt Rechenergebnis anzeigen

Hallo,

 

nein, das liegt daran, dass du hier etwas mit VBA berechnest, was du dann der cells().Formula-Eigenschaft zuweist:

Cells(aktZeile, 39).Formula = ((Cells(aktZeile, Schluss) - (Application.WorksheetFunction.Min(Range(Cells(aktZeile, 4), Cells(Berechnungsanfang, 4))))) / (Application.WorksheetFunction.Max(Range(Cells(aktZeile, 3), Cells(Berechnungsanfang, 3))) - (Application.WorksheetFunction.Min(Range(Cells(aktZeile, 4), Cells(Berechnungsanfang, 4))))) * 100)

Es wird also per VBA das, was auf der rechten Seite des Gleichheitszeichens steht berechnet und das Ergebnis (in dem Fall eine Zahl) in der Cells().Formula-Eigenschaft übergeben. Die Cells().Formula-Eigenschaft ist sehr "großmütig", sie nimmt sowohl Formeltexte, als auch Zahlen an. In jedem Fall versucht sie, das, was ankommt, in als gültige Excel-Formel zu interpretieren. Gelingt diese Interpretation erfolgreich, wird in die Zelle die Formel geschrieben und ihr Wert berechnet. Gelingt die Interpretation nicht, wird eben das von der rechten Seite des Gleichheitszeichens direkt in die Zelle geschrieben.

Deine Zeile sollte also eigentlich

Cells(aktZeile, 39).Value =  ....

heißen, weil damit direkt klar wird, dass in den Zellwert eingetragen wird und das alles nichts mit Excelformeln zu tun hat.

 

 

Hier

Range(Cells(4, 31), Cells(Rows.Count, 1).End(xlUp).Offset(-1, 30)).FormulaR1C1 = _
    "=((RC[-26]-MIN(RC[-27]:R[4]C[-27]))/(MAX(RC[-28]:R[4]C[-28])-MIN(RC[-27]:R[4]C[-27])))*100"

generierst du auf der rechten Seite des Gleichheitszeichens einen String (Buchstaben-zahlenkombination), die eine gültige Excelformel in R1C1-Schreibweise darstellt. Die FormulaR1C1E-eigenschaft ist wie die Formula-Eigenschaft, nur dass sie die Formeln in R1C1-Schreibweise erwartet. Es wird also in die Zelle eine Formel eingetragen. Und der Wert der Formel berechnet.

 

Du mussst also die "Excel-Übersetzung" selbst vornehmen. Für die im ersten Post gepostete Formel sieht das dann so aus:

Cells(aktZeile, 39).Formula = "=(" & Cells(aktZeile, Schluss).address & _ 
               "-MIN(" & Range(Cells(aktZeile, 4), Cells(Berechnungsanfang, 4)).address & "))/(MAX(" & _ 
               Range(Cells(aktZeile, 3), Cells(Berechnungsanfang, 3)).address & ")-MIN(" & _
               Range(Cells(aktZeile, 4), Cells(Berechnungsanfang, 4)).address & "))*100"

Es wird also wieder auf der rechten Seite des Gleichheitszeichens ein String erstellt, der die Formel (in englischer Schreibweise) genau so enthält, wie wenn du sie von Hand eintippst.

Verstehst du?

 

Grüße, Ulrich


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
03.03.2019 21:32:45 Igor
NotSolved
03.03.2019 21:47:28 Ulrich
NotSolved
03.03.2019 21:53:35 Ulrich
NotSolved
04.03.2019 20:16:55 Igor
NotSolved
Rot VBA: Formeltext in Zeile anstatt Rechenergebnis anzeigen
05.03.2019 10:19:36 Ulrich
NotSolved