Registriert seit: 02.03.2023
Version(en): 2016
Hallo zusammen,
ich benötige Unterstützung bei der Einbindung einer Formel in einem Makro
In meinem Macro steht folgende Zeile:
ActiveChart.Axes(xlValue).MaximumScale = Range("AX35").Value
funtktioniert!
In der Zelle AX35 steht eine Formel:
(ist ja eigentlich egal welche, aber das ist sie)
=ROUNDDOWN(MIN(AK36:AM46;AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))
Jetzt möchte ich also nicht mehr im Makro auf die Zelle AX35 zugreifen, sondern die Formel direkt in die Programmzeile einbinden:
ActiveChart.Axes(xlValue).MaximumScale = Formula ="=ROUNDDOWN(MIN(AK36:AM46;AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))"
... so funktioniert's nicht.
ActiveChart.Axes(xlValue).MaximumScale = _????????_ "=ROUNDDOWN(MIN(AK36:AM46;AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))"
Also was gehört dazwischen?
Vielen Dank im voraus
Registriert seit: 13.04.2014
Version(en): 365
Hi,
mal ein Versuch:
Code:
ActiveChart.Axes(xlValue).MaximumScale = Application.WorksheetFunction.RoundDown(Application.Min(Range("AK36", "AM46"), Range("AR36", "AT46"), -(Application.Min(Application.Len(Application.Min(Range("AK36", "AM46")), Application.Len(Application.Min(Range("AR36", "AT46"))) - 2)))))
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 02.03.2023
Version(en): 2016
Hi,
danke für die Antwort, funktioniert aber nicht. Bleibt beim ersten RoundDown hängen.
Mein Startpunkt war folgender:
Sub Macro1()
Range("a1").Select
ActiveCell.Formula = "=ROUNDUP(MAX(AK36:AM46,AR36:AT46)"
End Sub
- ich hab mal den restlichen Schnickschnack weggelassen
In die aktive Zelle (A1) wird der Max-Wert aus zwei verschiedenen Bereichen geschrieben und vorher berechnet.Also hab ich gedacht, es liese sich auch so einbauen
ActiveChart.Axes(xlValue).MaximumScale = _????????_ "=ROUND .....
Dennoch danke für die Bemühung
Registriert seit: 13.04.2014
Version(en): 365
Hallo,
was ich Dir zeigen wollte ist, dass es nicht so geht, wie Du Dir das vorstellst. Du musst die Formel in VBA-Code umwandeln. Da ich Deine Formel mangels Beispieldaten nicht verstehe, kann ich Sie auch nicht in Code umsetzen.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
dazwischen gehört Evaluate:
ActiveChart.Axes(xlValue).MaximumScale = Evaluate("=ROUNDDOWN(MIN(AK36:AM46,AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))")
Gruß Uwe
26865
Nicht registrierter Gast
Code:
Dim r1 As Range: Set r1 = Worksheets("Tabelle1").Range("AK36:AM46")
Dim r2 As Range: Set r2 = Worksheets("Tabelle1").Range("AR36:AT46")
ActiveChart.Axes(xlValue).MaximumScale = Application.RoundDown(Application.Min(Union(r1, r2)), -(Application.Min(Len(Application.Min(r1)), Len(Application.Min(r2))) - 2))
Interessenshalber:
Zitat:(ist ja eigentlich egal welche, aber das ist sie)
=ROUNDDOWN(MIN(AK36:AM46;AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))
Mit welchen Landeseinstellungen arbeitest du? Englische Formelnamen und Semikolon als Argumenttrenner sind mir noch nicht untergekommen.
Registriert seit: 02.03.2023
Version(en): 2016
Danke für das Interesse. An der Stelle muss ich widersprechen (siehe folgender kleiner Makro):
Sub Macro1()
Range("A1").Select
ActiveCell.Formula = "=MAX(AK36:AM46,AR36:AT46)"
End Sub
Es werden zwei Bereiche untersucht... Bereich 1: AK36:AM46 und Bereich 2: AR36:AT46
... und die Ausgabe in Zelle A1 ist der Maximalwert aus beiden Bereichen
--> funktioniert
Diese Formel ist direkt aus einer Zelle kopiert und könnte so auch in der Zelle A1 stehen
26865
Nicht registrierter Gast
(03.03.2023, 11:25)NOVI64 schrieb: Danke für das Interesse. An der Stelle muss ich widersprechen (siehe folgender kleiner Makro):
ActiveCell.Formula = "=MAX(AK36:AM46,AR36:AT46)"
Wem widersprichst du?
Sofern sich das auf meine Frage zur Spracheinstellung bezieht: Deine jetzige Formel ist VBA-konform mit amerikanischer Schreibweise korrekt, das hat keiner hinterfragt. Deine Formel im Startbeitrag lautet aber:
Zitat:=ROUNDDOWN(MIN(AK36:AM46;AR36:AT46),-(MIN(LEN(MIN(AK36:AM46)),LEN(MIN(AR36:AT46)))-2))
Daher die Frage: Wo kommt das Semikolon her?
Zum eigentlichen Thema: Kommst du mit unseren Hinweisen jetzt klar, oder willst du da auch "widersprechen"? Oder gibt es keine Rückmeldung?
Registriert seit: 02.03.2023
Version(en): 2016
03.03.2023, 13:59
(Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2023, 14:05 von NOVI64.)
da fehlt etwas zwischen EVALUATE und der Klammer.
Es funktioniert nicht.
Ich hab's jetzt aber raus
Dennoch vielen Dank für Interesse und Antwort. Ich hab viel gelernt.
Nur als Background bei Interesse
Ich stelle zwei Diagramme gegenüber die verschiedene Datenquellen haben. Die Werteachsen sollen aber die gleiche Skalierung haben, damit man auf den ersten Blick einen Unterschied sieht ohne Werte lesen und vergleichen zu müssen
Also ist der Max-Skalenwert der Max-Wert aus beiden Tabellen und der Min-Skalenwert der Min-Wert aus beiden Tabellen.
eingepackt ist das dann in eine ROUNDUP / ROUNDDOWN Funktion.
ROUNDUP für den Max-Skalenwert
ROUNDDOWN für den Min Skalenwert
ich möchte z.B. einen krummen Wert 74.845.231 dargestellt haben als 75.000.000. Ich brauche also die Länge der längsten Zeichenkette... wäre dann bei 74.845.231 der Wert 8. Den Wert um 2 reduziert ergibt 6 --> die ersten 6 Stellen werden zu Nullen und die 7. Stelle wird aufgerundet
gleiches für den Min-Skalenwert
Ich antworte, wenn auch mit Verzug...
aber nicht unter Druck!
Es ist Freitag und ich bin in einem Angestelltenverhältnis, bedeutet bis min 1600h gebunden.
Die Hinweise haben geholfen inkl kleinerer Änderungen
Zu meiner Version (Sprache)
Befehle sind in English
Zeichen sind Deutsch
Das Semikolon hatte ich vergessen zu ändern, daran lags aber nicht.
Vielen Dank für die Unterstüzung. Ich hab viel gelernt
26865
Nicht registrierter Gast
(03.03.2023, 13:59)NOVI64 schrieb: Das Semikolon hatte ich vergessen zu ändern
Aha. Danke .