erwischt!
16.10.2012 20:14:10
Erich
Hi Erhard,
da hatte ich nur nach vorn geschaut, wobei doch Rücksicht genauso wichtig ist. :-)
Nicht nur dein Beispiel - Zeile 7 war auch falsch.
Hier mein 2. Vorschlag:
| A | B | C | D | E |
1 | Vorgaben | gerechnet |
2 | Zahl | Kennzahl | richtig | Kennzahl | OK |
3 | 1223331 | 7 | WAHR | 7 | WAHR |
4 | 1223332 | 6 | WAHR | 6 | WAHR |
5 | 1234567 | 1 | WAHR | 1 | WAHR |
6 | 1233233 | 1 | WAHR | 1 | WAHR |
7 | 1122233 | 0 | WAHR | 0 | WAHR |
8 | 1122312 | 4 | FALSCH | 3 | FALSCH |
9 | 3331221 | 6 | FALSCH | 7 | FALSCH |
10 | 1113331 | 5 | FALSCH | 4 | FALSCH |
11 | 1113331 | 4 | WAHR | 4 | WAHR |
Formeln der Tabelle |
Zelle | Formel | C3 | =KennzRichtig(A3;B3) | D3 | =KennZahl(A3) | E3 | =KennzahlOK(A3;B3) |
|
Und der Code:
Function KennZahl(zz As String) As Integer
Dim ii As Integer, tt As String, pp As Integer, ee As Integer
For ii = 1 To 3
tt = WorksheetFunction.Rept(CStr(ii), ii)
pp = InStr(zz, tt)
While pp
If Mid("X" & zz, pp, ii) tt And _
Mid(zz & "X", pp + 1, ii) tt Then ee = ee + ii
pp = InStr(pp + ii + 1, zz, tt)
Wend
Next ii
KennZahl = ee
End Function
Function KennzRichtig(zz As String, kk As Integer) As Boolean
Dim ii As Integer, tt As String, pp As Integer, ee As Integer
For ii = 1 To 3
tt = WorksheetFunction.Rept(CStr(ii), ii)
pp = InStr(zz, tt)
While pp
If Mid("X" & zz, pp, ii) tt And _
Mid(zz & "X", pp + 1, ii) tt Then ee = ee + ii
pp = InStr(pp + ii + 1, zz, tt)
Wend
If ee > kk Then Exit For
Next ii
KennzRichtig = kk = ee
End Function
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich