Anzeige
Archiv - Navigation
1228to1232
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

Zahl bestimmen

Zahl bestimmen
alifa
Hallo,
ich suche alle 6-stelligen Zahlen, die zweimal die 3 beinhaltet. Die anderen 4 Ziffern sollen unterschiedlich sein und sich zwischen 1 und 9 befinden(ohne die 3). Eine solche Zahl wäre:312538 oder 123391. mit:Len(n)-len(Replace(n,"3",""))=2 kann ich das mit den 2 Dreien lösen. Kann mir jemand weiterhelfen?
Gruß, Alifa

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zahl bestimmen
27.09.2011 12:17:05
Rudi
Hallo,
 ABCDEFGH
1ZahlabcdefTest
2100033100033FALSCH
3100034100034FALSCH
4100035100035FALSCH
5100036100036FALSCH

ZelleFormel
B2=TEIL($A2;SPALTE(A1);1)
C2=TEIL($A2;SPALTE(B1);1)
D2=TEIL($A2;SPALTE(C1);1)
E2=TEIL($A2;SPALTE(D1);1)
F2=TEIL($A2;SPALTE(E1);1)
G2=TEIL($A2;SPALTE(F1);1)
H2{=UND(ZÄHLENWENN(B2:G2;" 3" )=2;SUMME(1/ZÄHLENWENN(B2:G2;B2:G2))=5)}
A3=A2+1
B3=TEIL($A3;SPALTE(A2);1)
C3=TEIL($A3;SPALTE(B2);1)
D3=TEIL($A3;SPALTE(C2);1)
E3=TEIL($A3;SPALTE(D2);1)
F3=TEIL($A3;SPALTE(E2);1)
G3=TEIL($A3;SPALTE(F2);1)
H3{=UND(ZÄHLENWENN(B3:G3;" 3" )=2;SUMME(1/ZÄHLENWENN(B3:G3;B3:G3))=5)}
Achtung, Matrixformel!
Die geschweiften Klammern{} nicht eingeben,
sondern die Zelle mit
Shift + Strg + Enter
verlassen statt Enter alleine.

Runter kopieren, bis der Excel-Arzt kommt und nach WAHR filtern.
 ABCDEFGH
2303102334102334WAHR
2304102335102335WAHR
2305102336102336WAHR
2306102337102337WAHR
2307102338102338WAHR
2308102339102339WAHR
2312102343102343WAHR

Gruß
Rudi
Anzeige
AW: Zahl bestimmen
27.09.2011 13:19:53
alifa
Hallo Rudi,
danke für die schnelle Antwort. Durch die Zeile mit "Len(n)-Len(...." dachte ich, das Thema klar dargestellt zu haben. Was ich brauche, ist ein Teil für mein MAKRO. Diese Zahl wird dann weiter, mit anderen Bedingungen "konfrontiert", so dass letztlich nur eine von den vielen möglichen richtig sein kann. Übrigens, die Zahl darf die Ziffer 0 nicht enthalten.
Gruß, Alifa
AW: Zahl bestimmen
27.09.2011 14:03:47
Rudi
Hallo,

Sub aaaa()
Dim arrTmp(1 To 6), objZahl As Object, objTest As Object, a, b, c, d, e, f, i As Integer, n  _
As Integer
Set objTest = CreateObject("Scripting.dictionary")
Set objZahl = CreateObject("Scripting.dictionary")
For a = 1 To 9
For b = 1 To 9
For c = 1 To 9
For d = 1 To 9
For e = 1 To 9
For f = 1 To 9
arrTmp(1) = a
arrTmp(2) = b
arrTmp(3) = c
arrTmp(4) = d
arrTmp(5) = e
arrTmp(6) = f
n = 0
objTest.Removeall
For i = 1 To 6
n = n - (arrTmp(i) = 3)
Next
If n = 2 Then
For i = 1 To 6
objTest(arrTmp(i)) = 0
Next
If objTest.Count = 5 Then objZahl(a & b & c & d & e & f) = 0
End If
Next f
Next e
Next d
Next c
Next b
Next a
Sheets(1).Cells(1, 1).Resize(objZahl.Count) = WorksheetFunction.Transpose(objZahl.keys)
End Sub

Gruß
Rudi
Anzeige
AW: Zahl bestimmen
27.09.2011 16:31:45
alifa
mein einfacher Code
.
.
.
For c1 = 1 To 9
For c2 = 1 To 9
For c3 = 1 To 9
For c4 = 1 To 9
For c5 = 1 To 9
For c6 = 1 To 9
n = CStr(c1 & c2 & c3 & c4 & c5 & c6)
If Len(n) - Len(Replace(n, "3", "")) = 2 Then
jetzt müsste folgen, sinngemäß:
"wenn die verbliebenen 4 Ziffern untereinander unterschiedlich sind, dann"
Ob das überhaupt so einfach geht...
Gruß, Alifa
AW: Zahl bestimmen
28.09.2011 13:32:27
alifa
Hallo,
zunächst vielen Dank an die beiden Helfer!
Ich konnte das Problem jetzt so lösen:
n1 = CStr(Replace(n, 3, ""))
If Ema(n1) Then
Ema ist eine Funktion, die "Wahr" zurückgibt, wenn alle Ziffern unterschiedlich sind. Das klappt.
Gruß, Alifa
Anzeige
AW: Zahl bestimmen
27.09.2011 22:52:19
Uduuh
Hallo,

Sub Main()
Dim objArr As Object, arrKombi(0 To 5)
Dim i As Integer, j As Integer, k As Integer, l As Integer
Dim DasArray, arrTmp
Set objArr = CreateObject("Scripting.Dictionary")
arrKombi(4) = 3
arrKombi(5) = 3
arrTmp = Array(1, 2, 4, 5, 6, 7, 8, 9)
For i = 0 To UBound(arrTmp) - 3
arrKombi(0) = arrTmp(i)
For j = i + 1 To UBound(arrTmp) - 2
arrKombi(1) = arrTmp(j)
For k = j + 1 To UBound(arrTmp) - 1
arrKombi(2) = arrTmp(k)
For l = k + 1 To UBound(arrTmp)
arrKombi(3) = arrTmp(l)
Kombiniere "", arrKombi, objArr
Next
Next
Next
Next
DasArray = objArr.keys
'Ausgabe in neuem Blatt
Worksheets.Add.Cells(1, 1).Resize(UBound(DasArray) + 1) = WorksheetFunction.Transpose( _
DasArray)
End Sub


Sub Kombiniere(strTmp, DasArray, objArr As Object)
Dim i As Integer, j As Integer, k As Integer
Dim strTmp2, DasArray2
If UBound(DasArray) > 0 Then
ReDim DasArray2(UBound(DasArray) - 1)
For i = 0 To UBound(DasArray)
strTmp2 = strTmp & DasArray(i)
k = 0
For j = 0 To UBound(DasArray) - 1
If i = j Then k = 1
DasArray2(j) = DasArray(j + k)
Next j
Kombiniere strTmp2, DasArray2, objArr
Next i
Else
objArr(strTmp & DasArray(0)) = 0
End If
End Sub

Gruß aus’m Pott
Udo

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige