Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
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
Inhaltsverzeichnis

Makro zehnstellig

Makro zehnstellig
Alifa
Hallo,
eine 10-stellige Zahl wird gesucht. Alle Ziffern von 0 bis 9 sind enthalten. Eine Bedingung: Die Summe der Ziffern zwischen der 3 und der 5 ist gleich a. Wie kann man " Wenn die Summe der Ziffern zwischen der Ziffer 3 und der Ziffer 5 den Wert a hat, dann" in VBA übersetzen? Beispiel a=17. Dann ist die Zahl 1346750982 WAHR und 1304659278 FALSCH. Mein Ansatz: Alle Permutationen der Ziffern 0-9 werden ermittelt. Dann für jede Zahl die Bedingungen gestellt. Es kommen noch andere Bedingungen hinzu, sonst wäre es nicht eindeutig. Das ist Freizeitbeschäftigung. Kann mir jemand helfen? Danke im Voraus!
Alifa
AW: Makro zehnstellig
05.06.2012 07:01:59
marcl
Guten Morgen Alifa,
es gibt sicher bessere Lösungen, aber ich würde es so machen:
Sub zahl()
Dim zahl As Integer
Dim i As Integer
For i = 3 To 5
zahl = zahl + Mid(Range("A1"), i, 1)
Next i
If zahl = 17 Then
MsgBox ("Gefunden: " & Mid(Range("A1"), 3, 3))
End If
End Sub

Gruß
marcl
kleiner Denkfehler ...
05.06.2012 08:04:38
Matthias
Hallo marcl
... oder Du hast es falsch verstanden.
Du summierst so nicht die Zahlen zwischen den Zahlen 3 und 5,
sondern Du rechnest den Wert zwischen der 3.Ziffer und der 5.Ziffer,
Ist diese Summe 17 gibst Du eine Msgbox aus.
Probier das mal mit: 106924385 (ist zufällig 17) ;-)
ist aber falsch, denn zwischen 3 und 5 liegt nur die 8 (also nicht 17)
1346750982 liegt zwischen 3 und 5 also 4+6+7=17
Gruß Matthias
Anzeige
kleiner Nachtrag ...
05.06.2012 08:20:37
Matthias
Hallo
... ich meinte nicht zwischen der 3.Ziffer und der 5.Ziffer
sondern Du addierst die Dritte-, Vierte- und Fünfte Ziffer(Position) im ZahlenString
Gruß Matthias
wenn die 5 vor der 3 steht auch auf a% prüfen ? oT
05.06.2012 08:09:26
Matthias
AW: wenn die 5 vor der 3 steht auch auf a% prüfen ? oT
05.06.2012 09:28:55
Alifa
Die 5 kann auch vor der 3 stehen. Die Summe der Zahlen(Ziffern) dazwischen muss stimmen. Auch 1546730982 ist WAHR.
wenn die 5 vor der 3 steht auch auf a% prüfen ? oT
05.06.2012 10:37:09
marcl
Mit kleiner Ergänzung ist auch das zu schaffen:
Sub zahl()
Dim start As Integer
Dim ziel As Integer
Dim zahl As Integer
Dim i As Integer
start = InStr(Range("A1"), 3) + 1
ziel = InStr(Range("A1"), 5) - 1
If ziel 
Gruß
marcl
Anzeige
AW: wenn die 5 vor der 3 steht auch auf a% prüfen ? oT
05.06.2012 18:01:21
Alifa
ich habe es jetzt mit InStr und Mid gelöst. Dann die Quersumme-Funktion eingesetzt.

If InStr(s, 2) > InStr(s, 1) Then
m1 = Mid$(s, InStr(s, 1), (InStr(s, 2) - InStr(s, 1)))
Else
m1 = Mid$(s, InStr(s, 2), (InStr(s, 1) - InStr(s, 2)))
End If
If Quers(m1) = 11 Then
If InStr(s, 3) > InStr(s, 2) Then
m2 = Mid$(s, InStr(s, 2), (InStr(s, 3) - InStr(s, 2)))
Else
m2 = Mid$(s, InStr(s, 3), (InStr(s, 2) - InStr(s, 3)))
End If
If Quers(m2) = 20 Then
Ich danke allen Beteiligten, besonders marcl!
Viele Ggüße, Alifa
AW: Makro zehnstellig, Denkfehler behoben
05.06.2012 08:52:43
marcl
Ok,
so sollte es funktionieren, wenn 3 vor der 5 steht. Was aber soll passieren, wenn die 5 vor der 3 steht? Von der 3 bis zum Ende der Zahlenkette und dann vom Begin bis zur 5 addieren?
Sub zahl()
Dim start As Integer
Dim ziel As Integer
Dim zahl As Integer
Dim i As Integer
start = InStr(Range("A1"), 3) + 1
ziel = InStr(Range("A1"), 5) - 1
For i = start To ziel
zahl = zahl + Mid(Range("A1"), i, 1)
Next i
If zahl = 17 Then
MsgBox ("Gefunden: " & Mid(Range("A1"), start, ziel - start + 1))
End If
End Sub

Gruß
marcl
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige