erwischt!
16.10.2012 22: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