Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hausaufgabe berechnen

Hausaufgabe berechnen
19.05.2007 11:10:00
Joachim
Hallo Excel-User,
meine Tochter bekam eine Mathe-Hausaufgabe, bei der 3 Zahlen summiert 222 als Ergebnis liefern sollen.
Es gibt 8 Zahlen.
35 / 37 / 57 / 76 / 82 / 85 / 91 / 94
Nun habe ich großspurig getönt das dies in Excel kein Problem sei, aber ich stehe ehrlich gesagt auf dem Schlauch!
Kann mir jemand sagen wie eine Formel oder noch besser ein VBA-Code dafür aussehen könnte?
Vielen Dank im voraus Joachim

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hausaufgabe berechnen
19.05.2007 12:04:39
Josef
Hallo Joachim,
ja ja, da war der Papa wieder einmal vorlaut und jetzt will er sich nicht plamieren;-)))))))
Das kenn ich von irgendwo;-((((
Das geht, ist aber nicht ganz einfach. Schau hier: http://www.excelformeln.de/tips.html?welcher=19
Gruß Sepp

AW: Hausaufgabe berechnen
19.05.2007 12:10:49
ingUR
Hallo, Joachim,
ein VBA-Programm dafür zu entwickeln, könnte sich an dieser Tabelle orrientieren:
 
 BCDEFGHIJKLM
1 222 3537577682859194 
235 187         
337 185      9491222
457 165         
576 146         
682 140         
785 137         
891 131 94     37222
994 128 91    37 222
Formeln der Tabelle
D2 : =$C$1-B2
E2 : =WENN(ISTZAHL(VERGLEICH($D2-E$1;$B$2:$B$9;0));$D2-E$1;"")
F2 : =WENN(ISTZAHL(VERGLEICH($D2-F$1;$B$2:$B$9;0));$D2-F$1;"")
G2 : =WENN(ISTZAHL(VERGLEICH($D2-G$1;$B$2:$B$9;0));$D2-G$1;"")
H2 : =WENN(ISTZAHL(VERGLEICH($D2-H$1;$B$2:$B$9;0));$D2-H$1;"")
I2 : =WENN(ISTZAHL(VERGLEICH($D2-I$1;$B$2:$B$9;0));$D2-I$1;"")
J2 : =WENN(ISTZAHL(VERGLEICH($D2-J$1;$B$2:$B$9;0));$D2-J$1;"")
K2 : =WENN(ISTZAHL(VERGLEICH($D2-K$1;$B$2:$B$9;0));$D2-K$1;"")
L2 : =WENN(ISTZAHL(VERGLEICH($D2-L$1;$B$2:$B$9;0));$D2-L$1;"")
M2 : =WENN(ZÄHLENWENN(E2:L2;">0")=2;B2+SUMME(E2:L2);"")
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Nach der Subtraktion der ersten Zahl, sind nur noch Ergebnisse weiter zu betrachten, die auch das Ergebnis einer Summe aus geneu zwei Zahlen des gegebenen Vektors sind.
Gruß,
Uwe

Anzeige
AW: Hausaufgabe berechnen
19.05.2007 12:36:03
Joachim
Vielen Dank!
Ich bin gerettet!
Joachim

AW: Hausaufgabe berechnen
19.05.2007 15:21:15
Gerd
Jaja, für die Schule wäre statt Solver eine Lösung mit Logik besser.
Keine 3 ungeraden, da Summe ungerade.
Keine 2 geraden u. eine ungerade, da Summe ungerade.
Drei gerade 76 + 82 + 94 =252
Eine gerade u. zwei ungerade
---Testzahl1 nur eine gerade Zahl
Summe - gerade Zahl Endziffer Restsumme
222 -76 146 6
222 -82 140 0
222 -94 128 8
Summe zweier ungerader Zahlen Summe 6-0-8
35 37 2
35 57 2
35 85 120
35 91 126
37 57 2
37 85 2
37 91 128
57 85 2
57 91 148
85 91 176
Grüße Gerd

Anzeige
VBA-Lösung
20.05.2007 16:00:00
Rolf
Hallo Joachim,
hier mal eine VBA-Lösung nach Bernd Strohäcker(bst) (http://www.online-excel.de/fom/fo_read.php?f=1&bzh=14176&h=14160)
fG
Rolf
PS
In welche Klasse geht denn deine Tochter?
Option Explicit
Option Base 1
Sub testKombinationen() Dim V, arr, X V = 222 arr = Array(35, 37, 57, 76, 82, 85, 91, 94) X = checkValue(V, arr) MsgBox Join(Split(X, ";"), vbLf) End Sub


Function checkValue(Zahl, arWerte) Dim i&, j%, n&, m%, sig#, strVal$ m = UBound(arWerte) n = 2 ^ m - 1 For i = 1 To n For j = 1 To m If i And 2 ^ (j - 1) Then strVal = strVal & arWerte(j) & ";" sig = sig + arWerte(j) End If Next If sig = Zahl Then checkValue = strVal & ";" & Zahl Exit Function End If sig = 0 strVal = "" Next checkValue = "No Match" End Function


Anzeige
AW: VBA-Lösung
20.05.2007 17:05:32
Joachim
Hallo Rolf,
Wahnsinns Code!!
Gruß Joachim
Übrigens meine Tochter geht in die 3 Klasse Grundschule!
Schien mehr eine Aufgabe für die Eltern zu sein.

AW: @Rolf
20.05.2007 17:56:00
Gerd
Hallo Rolf,
kannst Du mir diese Codezeile "übersetzen" ?
If i And 2 ^ (j - 1) then
Nur nebenbei. Der erste Wert wird ohne "Option Base 1" nicht geprüft.
LG Gerd

AW: @Rolf
20.05.2007 19:53:38
Rolf
Hallo, lieber Gerd,
das schaust du dir am besten im Originalthread an. Dort haben Peter und Bernd sich einige Mühe
gegeben, das Unerklärliche zu erklären.
http://www.online-excel.de/fom/fo_read.php?f=1&bzh=14176&h=14160
LG + schönen Abend
Rolf
PS
Deinem "Nur nebenbei" pflichte ich bei

Anzeige
AW: @Gerd
21.05.2007 08:14:34
ingUR
Hallo, Gerd,
bei einer Aufgabe der drtitten Grundschulkasse tippe ich eher auf das üben der Grundrechenart Addition als auf die Aufforderung sich Algorithmen darzustellen, denn die Übung liefert 255 Additionsaufgaben, wenn da nicht die Beschränkung auf drei Elementen wäre. Diese Information nutzt das Programm nicht, sondern es löst alle möglichen Additionsaufgaben die durch das "binäre" Aneinaderreihen der möglichen Terme ensteht, bis es zur ersten Lösung gekommen ist.
Daraus ergibt sich allerdings auch, das weitere Lösungen nur zu erhalten sind, wenn man gültige Termkombinationen speichert und die Schleife über alle m Kombinationen laufen läßt.
Unter dem "binäre" Aneinaderreihern verstehe ich also die Binärdarstellung der Ordnungszahl der Kombination, die mit einer "1" an der Stelle k das k-te Element aus dem Zahlenvektor auswählt:
Beispiel:
1: binär 00000001 :: Addition: Sum=v1 aus Vektor
2: binär 00000010 :: Addition: Sum=v2
3: binär 00000011 :: Addition: Sum=v2+v1
4: binär 00000100 :: Addition: Sum=v3
5: binär 00000101 :: Addition: Sum=v3+v1
6: binär 00000110 :: Addition: Sum=v3+v2
7: binär 00000111 :: Addition: Sum=v3+v2+v1
...
255: binär 11111111 :: Addition: Sum=v8+v7+v6+v5+v4+v3+v2+v1
Du siehst also, das Programm verhält sich lange nicht so intilligent wie Deine Logik.
mit i AND 2^(j-1) wird ein Bitmustervergleich angestellt, bei dem als Ergebnis festgestellt wird, ob der Vergleich von Binärdarstellung der aktuellen Kombination i (=1...2^n-1) und der Vektorplatzahl j (=1 ... m) Wahr liefert:
Kombination 5: 00000101
Vektorplatz j=1: 2^(1-1)= 1 :: binär = 00000001
00000101
00000001
------------
00000001 :: Ergebnis Wahr, daher v1 für Kombination 5 gewählt
Vektorplatz j=2: 2^(2-1)= 2 :: binär = 00000010
00000101
00000010
------------
00000000 :: Ergebnis Falsch, daher v2 für Kombination 5 nicht gewählt
Vektorplatz j=3: 2^(3-1)= 4 :: binär = 00000100
00000101
00000100
------------
00000100 :: Ergebnis Wahr, daher v3 für Kombination 3 gewählt
Vektorplatz j=4: 2^(4-1)= 8 :: binär = 00001000
00000101
00001000
------------
00000000 :: Ergebnis Falsch, daher v4 für Kombination 3 gewählt, wie auch für jede weitere Stelle der Platz unbesetzt bleibt.
Das jedoch in der 3.Grundschulklasse zu erläutern, wird wohl nicht erfolgversprechend sein.
Gruß,
Uwe
P.S. durch ensprechende Ausgbaezeilen kann man sich Ordnungszahlen anschauen und Du, Gerd, wirst entdecken, das Deine Überlegungen einfach ignoriert werden, eben auch die tatsache, dass nur drei Elemente für die Additionsaufgabe auszuwählen sind.

Anzeige
AW: @Gerd
21.05.2007 08:40:13
ingUR
Hallo, Gerd,
natürlich ist Deine Beobachtung richtig, wonach «Der erste Wert wird ohne "Option Base 1" nicht geprüft.» wird, besagt doch gerade dieser Schalter, dass die Indexbasis eines Feldes bei 1 und nicht, wie standardmäßig voreingestellt, bei Null beginnt, das erste Element also den Index 1 erhält statt 0.
Ohne Option Base 1 ist das Variablenfeld um das eine Element auf dem Platz Null zu erweitern: (0, 35, 37....)
Gruß,
Uwe

AW: Darstellung der Operation i AND 2^(j-1)
21.05.2007 08:48:54
ingUR
Hallo,
Hier der Funktions-Code mit ausgabe aller Kombinationen auf das aktive Tabellenblatt zur Darstellung der Wirkung der Operation i AND 2^(j-1)

Function checkValue(Zahl, arWerte)
Dim i&, i1%, j%, n&, m%, sig#, strVal$, strVal1$, strIdx$, strIdx1$
m = UBound(arWerte)
n = 2 ^ m - 1
For i = 1 To n
strVal1 = ""
strIdx = i & " :: "
strIdx1 = i & " :: "
For j = 1 To m
i1 = 2 ^ (j - 1)
If i And 2 ^ (j - 1) Then
strIdx1 = strIdx1 & "[" & i1 & "]"
strIdx = strIdx & "(" & j & ")"
strVal1 = strVal1 & arWerte(j) & "+"
strVal = strVal & arWerte(j) & ";"
sig = sig + arWerte(j)
End If
Next
If sig = Zahl Then
checkValue = strVal & ";" & Zahl
'Exit Function
End If
sig = 0
strVal = ""
If Right(strVal1, 1) = "+" Then strVal1 = Left(strVal1, Len(strVal1) - 1)
Cells(i, 1) = CStr(strVal1)
Cells(i, 2) = "=" & strVal1
Cells(i, 3) = strIdx
Cells(i, 4) = strIdx1
Next
checkValue = "No Match"
End Function


Gruß,
Uwe

Anzeige
AW: @Uwe
21.05.2007 08:49:00
Rolf
Hallo Uwe,
du hast die gesamte Problematik sehr treffend zusammengefasst,
wenn auch der Umstand, "3. Grundschulklasse", erst im Nachhinein bekannt geworden ist.
Gleichwohl wurde ja ausdrücklich (irgend)eine VBA-Lösung gewünscht/präferiert,
und außer meiner lag/ liegt nichts auf dem Tisch.
Herzliche Grüße
Rolf

AW: @Rolf
21.05.2007 09:07:00
Uwe
Hallo, Rolf,
hier wollte ich nicht an dem VBA-Programm kritikt üben, zumal es eben das "Sahnehäubchen" der Anwendung des binären Vergleiches enthält. Diesen, in meinen Worten zu erklären, darum gingn es mir bei meinem Beitrag.
In meiner Zellenformellösung hatte ich mich nur auf die gestellte (Schul-)Aufgabe beschränkt, ohne auf eine allgemeingültige Erweiterung und erweiterbare Lösung im Auge zu haben. Da die gelieferten werte auch nur eine Lösung zulassen und die auch drei Terme hat, scheint es nur der Vollständigkeit zu dienen, dass hier auch jede andere Zahl von Termen ausgegeben wird, sofern sie 2222 ergibt, ja selbst wenn die zweite Zahl im Vektor eine 222 ist, wird diese "Kombination" als Ergebnis geliefert.
Dir als nochmals Dank für Deinen Beitrag.
Gruß,
Uwe

Anzeige
AW: @Uwe
21.05.2007 09:23:00
Rolf
Hallo Uwe,
alles klar.
Schönen Tag
Rolf

AW: VBA-Lösung
20.05.2007 19:45:00
Rolf
Hallo Joachim,
ist das heute so, dass Kinder in der 3. Grundschulklasse perfekt VBA können sollten?
Bei meinen war das noch nicht so - ist allerdings auch schon 30 Jahre her.
Ja, und zum Code - den hätt' ich auch gern selbst erfunden.
hG
Rolf

AW: @Rolf
20.05.2007 21:41:46
Gerd
Hallo Rolf,
meine Vermutung hat sich bestätigt, dass mit dieser Codezeile ein Vergleich auf "True"
ganz schräg verkürzt worden ist (Kommentar von Peter Hasenrodt ...(oder so :-) )
Ferner denke ich, dass nur eine von evtl. mehreren möglichen Kombinationen ausgegeben wird.
Und wegen der Schule. Das ist so: Die Lehrer schmeißen den Schülern Hausaufgaben an den
Kopf, die sie selber nicht richtig lösen können, geschweige denn vorher im Unterricht erklärt
haben. Deren Arbeit müssen die Eltern oder sonstwer machen, damit die Kinder etwas lernen.
Da gibt's teilweise schon in der Grundschule "Abläufe", die man nur an der Universität erwarten
sollte.
Deshalb habe ich auch einen relativ kurzen codefreien Lösungsweg angeboten.
Eine schöne Woche
Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige