Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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

Ziffernkette prüfen

Ziffernkette prüfen
Alifa
Hallo,
ich möchte folgendes mittels VBA-Code prüfen:
Zwischen den einzelnen Ziffern einer zehnstelligen Zahl(Ziffernkette) mit den Ziffern 1 bis 7 sollen mindestens so viele andere Ziffern stehen, wie der Wert aussagt. Beispiel:1213241213 ist eine "wahre" Zahl. Dagegen ist 2437454122 eine "falsche" Zahl. "Wahr" ist auch 7421324537. Es liegen keine gleichen Ziffern näher aneinander, als ihr Wert aussagt. Kann mir jemand helfen?
Gruß, Alifa

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Ziffernkette prüfen
18.01.2012 20:22:30
Erich
Hi Erhard,
probier mal

Option Explicit
Function Ziffernkette(TT As String) As Boolean
Dim ii As Integer, ZZ As String * 1
For ii = 1 To Len(TT) - 1
ZZ = Mid(TT, ii, 1)
If InStr(Mid(TT, ii + 1, ZZ), ZZ) > 0 Then Exit Function
Next ii
Ziffernkette = True
End Function
Das kannst du im Tabelenblatt aufrufen:
 AB
11213241213WAHR
22437454122FALSCH
37421324537WAHR

Formeln der Tabelle
ZelleFormel
B1=Ziffernkette(A1)
B2=Ziffernkette(A2)
B3=Ziffernkette(A3)

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Ziffernkette prüfen
19.01.2012 07:53:16
Alifa
Guten Morgen Erich,
die Funktion funktioniert prima. Eigentlich müsste das auch mit Array funktionieren. Also die ganzen Ziffern der Funktion als Array übergeben.
Vielen Dank!
Erhard
Ziffernfolge (Array) prüfen
19.01.2012 08:59:15
Erich
Hi Erhard,
mit Array ginge das z. B. so:

Option Explicit
Sub aaaTst()
Dim zz As Long, cc As Long, arrQ(1 To 10) As Byte
For zz = 1 To 3
For cc = 1 To 10
arrQ(cc) = Cells(zz, cc)
Next cc
Cells(zz, 11) = Ziffernfolge(arrQ)
Next zz
End Sub
Function Ziffernfolge(arrZ() As Byte) As Boolean
Dim ii As Byte, jj As Byte
For ii = LBound(arrZ) To UBound(arrZ) - 1
For jj = ii + 1 To Application.Min(ii + arrZ(ii), UBound(arrZ))
If arrZ(jj) = arrZ(ii) Then Exit Function
Next jj
Next ii
Ziffernfolge = True
End Function
Das lief mit diesen Daten:
 ABCDEFGHIJK
11213241213WAHR
22437454122FALSCH
37421324537WAHR

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige