Brüche kürzen

Guten Tag, liebe Wissende,

Ausgangsbasis: Excel XP erstellt mithilfe des Zufallsgenerators Matheaufgaben in Form von Brüchen. Anschließend soll Excel diese selbst automatisch kürzen. (für Kontrollblatt)

z.B.:

24 12 6 2
___ = ___ = ___ = ___
36 18 9 3

oder: dass Excel sogleich erkennt, dass man hier auch direkt mit 12 kürzen kann.

Dies geht wohl nur über eine For-next-Schleife o.ä.
a) Wie bitte geht diese hier für Zähler und Nenner?
b) Wie binde ich diese VB-Routine (ohne Makroaufruf?) so ein, dass sie immer dann, wenn per Tastendruck der Zufallsgenerator automatisch Aufgaben erstellt, zugleich die VB-Routine automatisch startet und das Ergebnis an das Excel-Arbeitsblatt zurückgibt?

Für Hilfe wäre sehr dankbar
Ludwig

Hallo Ludwig,
was hälst du davon den pre-Tag zu benutzen, dann sieht das was du meinst so aus:

 24 12 6 2
\_\_\_ = \_\_\_ = \_\_\_ = \_\_\_
 36 18 9 3

Gruß
Reinhard

Hallo Reinhard,
danke für den Hinweis. Beim Erstellen meiner Anfrage sah es auch so aus … Nur im Forum wurde es verändert. Aber wenn wir schon dabei sind: Was ist ein Pre-Tag bitte? Wird der so eingerahmt wie bei dir, mit &gt:stuck_out_tongue_winking_eye:RE>? Dann hätte ich wieder was gelernt.
Gruß
Ludwig

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ludwig!

Aber wenn wir schon dabei sind: Was ist ein Pre-Tag bitte? Wird der so
eingerahmt wie bei dir, mit &gt:stuck_out_tongue_winking_eye:RE>? Dann hätte ich wieder
was gelernt.

Ich bin zwar nicht Reinhard, aber ich kann dir das mit dem Pre-Tag auch erklären. Das ist ein Tag (Formatanweisung in HTML), das den Text so darstellt, wie er vorformatiert wurde. Das ist oft hilfreich, wenn du Tabellen und ähnliches darstellen willst. In HTML läuft alles über sogenannte Tags. Die, die du in W-W-W verwenden darfst, sind unter dem Eingabefenster für die Artikel angegeben. Tags werden immer geöffnet und geschlossen. Wenn du hier etwas mit Pre-Tags formatierst, wird es so dargestellt, als hättest du es in der Eingabemaske geschrieben.

Gruß Alex

Hallo, Ludwig!

Ich nehme an, die PRE-Tags sind soweit durch.

Willst Du nun schrittweise kürzen oder gleich komplett? Dafür bietet sich dann der Größte gemeinsame Teiler an, wie wir aus der Schule wissen. Hier als Funktion:

Function GGT(plngZaehler As Long, plngNenner As Long)
 If plngNenner = 0 Then
 GGT = plngZaehler
 Else
 GGT = GGT(plngNenner, plngZaehler Mod plngNenner)
 End If
End Function

Somit wäre Dein gekürzter Bruch gleich

Zähler/GGT(Zähler, Nenner)
--------------------------
Nenner/GGT(Zähler, Nenner)

Wenn Du das haben willst:

 24 12 6 2
\_\_\_ = \_\_\_ = \_\_\_ = \_\_\_
 36 18 9 3

musst Du das schon iterativ durchführen und versuchen, durch alle möglichen Zahlen, beginnend bei 2, endend bei der kleineren der beiden, zu kürzen.

Dies geht wohl nur über eine For-next-Schleife o.ä.
a) Wie bitte geht diese hier für Zähler und Nenner?

s. o.

b) Wie binde ich diese VB-Routine (ohne Makroaufruf?) so ein,

Was meinst Du mit „ohne Makroaufruf“? Ohne gesonderten Makroaufruf?

dass sie immer dann, wenn per Tastendruck der Zufallsgenerator
automatisch Aufgaben erstellt, zugleich die VB-Routine
automatisch startet und das Ergebnis an das Excel-Arbeitsblatt
zurückgibt?

Da kommt’s drauf an, wie Du das ganze dargestellt hast. Ist der Bruch in einer Zelle? Oder stehen Zähler und Nenner in zwei Zellen?

Prinzipiell erzeugst Du Deine Aufgaben und berechnest die Lösungen.
Ich gehe jetzt mal davon aus, dass Zähler und Nenner in zwei übereinander stehenden Zellen stehen, z. B. A1 und A2. In B soll dann das gekürzte Ergebnis rein. Also kommt nach B1 die Formel

=A1/GGT(A1; A2)

und nach B2

=A2/GGT(A1; A2)

Das sollte sich dann automatisch berechnen…

Gruß, Manfred

Für Hilfe wäre sehr dankbar
Ludwig

Also zumindest mein Excel hat in den Analyse-Funktionen die Funktion
=GGT()

*snip*
Klicken Sie im Menü Extras auf Add-Ins.
Aktivieren Sie in der Liste Verfügbare Add-Ins das Kontrollkästchen Analyse-Funktionen, und klicken Sie dann auf OK.
Folgen Sie, falls notwendig, den Anweisungen im Setup-Programm.
*/snip*

Wenn man das dann zum laufen bekommt reicht eine einfache Formel…
A1 = 24
A3 = 36
C1 = Ergebnis-Zähler
C3 = Ergebnis-Nenner

C1 enthält dann =A1/GGT(A1;A3)
und C3 enthält =A3/GGT(A1;A3)

so einfach ist das… :wink:

Grüße
Munich

achja…
in Englisch wäre das der
„greatest common divisor“
also
= GCD()

Grüezi Ludwig

Ausgangsbasis: Excel XP erstellt mithilfe des
Zufallsgenerators Matheaufgaben in Form von Brüchen.
Anschließend soll Excel diese selbst automatisch kürzen. (für
Kontrollblatt)

z.B.:

24 12 6 2
___ = ___ = ___ = ___
36 18 9 3

oder: dass Excel sogleich erkennt, dass man hier auch direkt
mit 12 kürzen kann.

Dies geht wohl nur über eine For-next-Schleife o.ä.

Wenn Du den Bruch

24
\_\_
36

direkt in eine Excel-Zelle schreibst und diese als ‚Bruch einstellig‘ formatierst macht Excel daraus ohne weitere Umrechnung

2
\_
3

.

vielleicht reicht dir dies ja schon?


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo, Thomas!

direkt in eine Excel-Zelle schreibst und diese als ‚Bruch
einstellig‘ formatierst macht Excel daraus ohne weitere
Umrechnung

Dabei rundet Excel aber äüßerst großzügig, oder wie genau trägst Du den Bruch in eine Zelle ein? 12/25 werden bei mir zu 1/2. Und das ist ja nun nicht soooo toll…

Gruß, Manfred

Grüezi Manfred

direkt in eine Excel-Zelle schreibst und diese als ‚Bruch
einstellig‘ formatierst macht Excel daraus ohne weitere
Umrechnung

Dabei rundet Excel aber äüßerst großzügig, oder wie genau
trägst Du den Bruch in eine Zelle ein? 12/25 werden bei mir
zu 1/2. Und das ist ja nun nicht soooo toll…

…dann nimm den Bruch doch einfach zwei- oder dreistellig, oder definiere die Genauigkeit über das Benutzerdefinierte Format selbst. :wink:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Guten Tag, liebe Wissende und Hilfsbereite,

vielen Dank für all eure Unterstützung. Die Funktion GGT() und übrigens auch KGV() hätte ich nicht vermutet. Aber diese sind in Excel implementiert - der Rest war ein Kinderspiel.

Ich hoffe, ich kann auch mal wieder jemand in www helfen.
Gruß
Ludwig