Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1640to1644
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

Zahlenkombinationen finden

Zahlenkombinationen finden
01.09.2018 08:49:43
erichm
Hallo,
leider ist meine letzte Anfrage ungelöst aus der Forumsliste gefallen, deswegen nochmals die Anfrage.
Innerhalb einer Matrix sind Zahlenkombinationen unter bestimmten Bedingungen zu finden:
1. Matrix ist der Bereich K3:Q10
2. Eine Zahl kommt unterschiedlich häufig vor; von 0-mal bis X-mal.
3. Es werden die Zahlen gesucht, die folgende Gemeinsamkeiten haben (das Ergebnis kann aber auch 0 sein, also es gibt die Konstellation nicht):
Eine von Zwei Zahlen kommt in jeder Spalte mindestens einmal vor und gleichzeitig ist eine der beiden Zahlen aber in jeder Spalte vorhanden
oder
Eine von Drei Zahlen kommt in jeder Spalte mindestens einmal vor und gleichzeitig ist eine der drei Zahlen aber in jeder Spalte vorhanden
neue Musterdatei; zwei Konstellationen farblich gekennzeichnet:
https://www.herber.de/bbs/user/123578.xlsx
Es wäre auch kein Problem, wenn das Ergebnis in einer separaten Tabelle ermittelt wird.
Vielen Dank nochmal.
Das war der letzte Thread:
https://www.herber.de/forum/archiv/1640to1644/t1640866.htm
mfg

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenkombinationen finden
01.09.2018 09:33:55
Matthias
Moin!
Was meinst du den mit dem zweiten Halbsatz in der Beschreibung:
Eine von Zwei Zahlen kommt in jeder Spalte mindestens einmal vor und gleichzeitig ist eine der beiden Zahlen aber in jeder Spalte vorhanden
Ich interpretiere das so, dass eine der Zahlen (die erst oder zweite) in jeder Spalte sein muss. Ansonsten wäre das ja die selbe Vorgabe wie im ersten Halbsatz nur anders formuliert.
Unter der Annahme haut dein Beispiel aber nicht hin, weil weder bei der gelben noch grünen Lösung eine Zahl (die gleiche) in jeder Spalte auftritt.
Im Grunde suchst du ein Zahlenpaar bzw. -triple, wobei in jeder Spalte der Matrix mind. eine der Zahlen existiert!?
Und es soll nur mit Formeln gearbeitet werden - VBA nicht ?
VG
Anzeige
AW: Zahlenkombinationen finden
01.09.2018 09:43:54
erichm
Hallo Matthias,
DANKE.
Im Grunde suchst du ein Zahlenpaar bzw. -triple, wobei in jeder Spalte der Matrix mind. eine der Zahlen existiert!
Genau das wollte ich mit meiner Beschreibung ausdrücken, ist mir aber irgendwie nicht gelungen....
VBA-Alternative ist auch möglich.
mfg
AW: ist der "Knackpunkt", deshalb nachgefragt ...
01.09.2018 10:12:47
neopa
Hallo Erich,
... es geht mir um Deine Bestätigung der Aussage von Matthias und ganz konkret um das "mind" darin. Darauf zielte nämlich bereits meine Frage in meinem letzten Beitrag im vorherigen thread.
Und jetzt deshalb nochmal ganz konkret nachgefragt. Wenn beispielhaft in K3 anstelle der 216 eine 217 und/oder in P3 eine 221 anstelle der 222 stünde, würde sich noch das gleiche von Dir vorgegebene Ergebnis ergeben oder nicht?
Wenn ja, könnte eine vertretbare Formelauswertung möglich sein. Allerdings komme ich frühestens morgen dazu, mir es noch einmal anzuschauen, denn ich geh jetzt gleich offline.
Gruß Werner
.. , - ...
Anzeige
AW: ist der "Knackpunkt", deshalb nachgefragt ...
01.09.2018 13:52:35
Matthias
Hallo Werner!
Falls du da noch eine Formellösung bastelst, würde mich die auch interessieren. Hatte da auch noch ein bissl probiert, da mit das mit den Binärfunktionen zu kompliziert erschien. Hatte hier noch eine Idee, die ich aber nicht in eine kopierbare Funktion umwandeln konnte - zumindest nicht für die Spaltenbezeichnung. Und 46 mal den Text anpassen wollte ich nicht (wobei das noch geht). Und zwar hätte ich noch den Vorschlag in der Auswertung die Formel so zu ändern.
=WENN(ZÄHLENWENN(K$3:K$10;$J13)=0;0;1)
Für bspw. K13. Dann stehen da nur 1 und 0 drin. Dann könnte man auch wieder in einer Kreuztabelle die beiden AUswertebereiche vergleichen. Bspw. mit Summenprodukt. Und das Ergebnis dann mit der Spaltenanzahl vergleichen. Für die ersten beiden Zahlen dann bspw. so:
=WENN(SUMMENPRODUKT((($K13:$Q13)+($K14:$Q14))*1)=7;1;0)
Mit bedingter Formatierung bei 1 (Vorgabe erfüllt) bzw. 0 könnte man sich dann einen Treffer anzeigen lassen. Die Formel nach unten ziehen geht, hab's nur nicht hinbekommen, das nach rechts zu ziehen, so dass sich die zweite Range von der Zeile um eins erhöht (falls das überhaupt geht).
Vllt. kannst du daraus ja was basteln.
VG
Anzeige
AW: bin zT. über TEXTauswertung vorgegangen ...
02.09.2018 16:33:46
neopa
Hallo Matthias,
... momentan hierzu nur soviel. In K13 hab ich =(ZÄHLENWENN(K$3:K$10;$J13)>0)+0
und in V13: =WENN(J13="";"";1&K13&L13&M13&N13&O13&P13&Q13) (da ich noch mit Excel 2010 arbeite, steht mir TEXTVERKETTEN() nicht zur Verfügung). Auf deren Basis hab ich eine weitere Hilfstabelle aufgebaut, die ich für die 2er Kombinationen auswerte.
Ich warte jetzt erst einmal ab, was Erich auf meine Fragen antwortet.
Gruß Werner
.. , - ...
AW: bin zT. über TEXTauswertung vorgegangen ...
02.09.2018 19:49:09
Matthias
Vielen Dank! Lese in den Antworten von Erich weiter mit. Arbeite noch mit Ex03 und kann es da eh nur auf der Arbeit in einer Pause mal probieren.
Viele Grüße
Anzeige
AW: ist der "Knackpunkt", deshalb nachgefragt ...
02.09.2018 10:40:46
erichm
Hallo Werner,
in beiden geänderten Fällen sind die Bedingungen erfüllt.
Ich habe die beiden Varianten in der neuen Musterdatei in eigenen Tabellen ergänzt:
https://www.herber.de/bbs/user/123692.xlsm
Besten Dank.
mfg
AW: dazu festgestellt ...
02.09.2018 16:22:30
neopa
Hallo Erich,
... da ich mir normalerweise keine xlsm-Datei aus dem Netz lade, geh ich davon aus, dass Du mir damit mitteilen wolltest, dass meine getroffene Aussage: "ja" zutreffend ist.
Mit der nunmehr präzisierten Bedingungen für Deine Zahlenkombinationen ließ sich jedoch bereits Zahlen Kombinationen finden, die nicht erst mit drei sondern bereits mit lediglich 2 Zahlen Deine Bedingung erfüllen. In der Beispieldatei wären das einerseits die 221 und die 227 sowie die 225 und die 228.
Dafür könnte ich (mit einer weiteren Hilfstabelle) eine Formellösung aufstellen. Allerdings dies momentan auch nur unter nachfolgender Bedingung:
Es dürfen max 14 Spalten ausgewertet werden und die auszuwertende Anzahl an Zahlen sollte nicht Tausende sein
Entsprechende Zahlenkombination mit drei Zahlen aufzustellen, die Deinen - nunmehr fixierten - Bedingungen entsprechen, macht für mich momentan keinen Sinn, weil diese sich einfach aus mindestens einem Vielfachen von den Kombinationen mit zwei Zahlen ergeben plus den den Übrigen. Derartige 3er Kombinationen als reine Formellösung zu finden wäre mir momentan noch immer zu aufwendig.
Wenn vorgenanntes für Dich ok wäre, kann ich Dir meinen Formel-Lösungsvorschlag aufzeigen. Du solltest dazu dann jedoch noch aussagen, ob für Dich schon eine bedingte Formatierung ausreichend ist, oder ob Du die Zahlenpaare gelistet haben möchtest.
Gruß Werner
.. , - ...
Anzeige
AW: dazu festgestellt ...
02.09.2018 17:06:23
erichm
Hallo Werner,
das war mir nicht bewußt wegen der xlsm-Datei, sorry.
Zu den Fragen:
- ja in beiden Fällen (Änderung K3 und/oder P3)
- Spaltenanzahl: die Matrix wird sich noch vergrößern, wobei es maximal 75 Zeilen sein werden; die Spaltenzahl auf 14 begrenzen ist kein Problem, da wir im Projekt eh eine Änderung vorgenommen haben; was ich nicht genau abschätzen kann ist, wieviel unterschiedliche Zahlen in der Matrix vorkommen (das spielt aber vielleicht auch keine Rolle)
- Formatierung / Auflistung: wir benötigen die Zahlenpaare, Formatierung ist nicht ausreichend
- 2er/3er-Kombinationen: das ist natürlich richtig, bei größerer Matrix steigen die 3er-Kombinationen dramatisch an, evtl. wird die Weiterverarbeitung da schwierig; insofern würde uns die 2er-Kombination auf alle Fälle weiterbringen (die VBA-Lösung von Matthias konnte ich noch nicht testen, aber da wären die 3er-Kombis ja auch drin)
Insofern bin ich auf den Formelvorschlag gespannt.
Danke.
mfg
Anzeige
AW: dann ...
02.09.2018 17:59:14
neopa
Hallo Erich,
... z.B. so: Formel für K13

=(ZÄHLENWENN(K$3:K$10;$J13)>0)+0
Diese nach rechts und unten kopieren.
Dann z.B. so (Formel V13 nach unten und W13 bis DE nach rechts und Zeile 99 nach unten kopieren.
Und X2 und Y2 nach unten.
 VWXY
1  Zahl1 Zahl2
2  221227
3  225228
4    
11    
12    
1310000000-1000000010000000
141000000010000000-10000000
15100000001000000010000000-

Formeln der Tabelle
ZelleFormel
X2=WENN(ZEILE(J1)>ZÄHLENWENN(W$13:BR$99;11111111)/2;"";AGGREGAT(15;6;$J$13:$J$99/(W$13:DE99="11111111"); ZEILE(J1)))
Y2=WENN(X1="";"";AGGREGAT(15;6;$J$13:$J$99/(W$13:DE99="11111111"); ZÄHLENWENN(W$13:BR$99;11111111)/2+ZEILE(J1)))
V13=WENN(J13="";"";1&K13&L13&M13&N13&O13&P13&Q13)
W13=WENN((SPALTE(A1)=ZEILE(A1))+($V13="")+(SPALTE(A1)>ANZAHL($J$13:$J$99)); "-";WECHSELN($V13+INDEX($V:$V;SPALTE(A1)+ZEILE(A$12)); 2;1))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...
Anzeige
AW: dann ...
03.09.2018 11:54:01
erichm
Hallo Werner,
vielen Dank, klappt wunderbar (bereits umfangreich getestet). Immer wieder faszinierend, das zusammenwirken der Formeln!!
mfg
AW: bitteschön, freut mich und ....
03.09.2018 13:11:33
neopa
Hallo Erich,
... nachgefragt: An Peter hast Du geschrieben: "Also interessant wäre es für uns wenn wir zwei bis drei Zahlen eingeben könnten, für die dann die Berechnungen stattfinden." Was meinst Du damit? Mich interessiert nämlich, ob man dies auch als Formellösung nachstellen könnte.
Gruß Werner
.. , - ...
AW: bitteschön, freut mich und ....
07.09.2018 09:19:04
erichm
Hallo Werner,
da hatte ich etwas falsch interpretiert. Insofern keine weitere Anfrage.
Die Auswertungen laufen bereits alle ohne Fehler!
mfg
Anzeige
AW: Zahlenkombinationen finden
01.09.2018 09:59:04
Matthias
MOin!
Ich nochmal. Ist nur mal eine Idee für deine Variante 2 Zahlen (wobei wie im Beispiel nur eine je Spalte vorkommen muss). Kommt dann noch auf deine Excelversion an - mit meinem Ex03 habe ich da keine Chance das zu probieren. :-) Laut WWW gibt es aber seit 2013 auch Bit Funktionen.
Du erstellt jetzt eine Kreuztabelle von allen Zahlen die in der Matrix vorkommen.
Für jede Zahl ermittelst du das Vorkommen in der Spalte mit 1 bzw. 0. Dann nimmst du Textverketten zu dem Ergebnis und hast für jede Zahl dann sowas wie 01001 ; 11001 als Beispiel. Dann gibt es jetzt wohl die Funktionen BININDEZ und BITODER. MIt ersterer wandelst du den Text in eine Dezimalzahl um und vergleichst dann in der Matrix de beiden Dezimalzahlen mit BITODER. Wenn dann das Ergebnis BININDEZ(1111) entspricht sind sie ein paar. Die 1111 entspricht soviel 1en wie du Spalten hast.
Vllt. kannst du das testen.
VG
Anzeige
AW: Zahlenkombinationen finden
01.09.2018 10:23:22
erichm
Danke Matthias, das werde ich testen (kann aber eine Weile dauern).
mfg
VBA Lösung
01.09.2018 12:12:06
Matthias
Moin!
Schon wieder ich. :-)
Da ich grad die Option hatte sauber zu machen oder zu programmieren, habe ich mal letzteres vorgezogen (aber für 1 gilt leider aufgeschoben ist nicht aufgehoben :-( ).
Also hier mal eine Lösung mit VBA programmiert. Das Ergebnis wird dir in einem zweitem Tabelleblatt (da mal schauen, dass es auch eins gibt) angezeigt. Er zeigt dir sowohl die Double als auch Tripple an. Es sollte keine Mehrfachtreffer dabei sein (bei der die Zahlen nur in der Reihenfolge getauscht sind).
VG
Sub kombinationen()
Dim daten
Dim zeile As Long
Dim tzeile As Long
Dim ttzeile As Long
Dim spalt As Long
Dim datrow As Long
Dim datcol As Long
Dim zahlen As Object
Dim alle2 As Object
Dim alle3 As Object
Dim treffer2 As Object
Dim treffer3 As Object
Set zahlen = CreateObject("Scripting.Dictionary")
Set treffer2 = CreateObject("Scripting.Dictionary")
Set alle2 = CreateObject("Scripting.Dictionary")
Set treffer3 = CreateObject("Scripting.Dictionary")
Set alle3 = CreateObject("Scripting.Dictionary")
daten = Tabelle1.Range("K3:Q10")
datrow = UBound(daten, 1)
datcol = UBound(daten, 2)
For spalte = 1 To datcol
For zeile = 1 To datrow
If Not zahlen.exists(daten(zeile, spalte)) Then zahlen.Add (daten(zeile, spalte)),  _
String(datcol, "0")
zahlen(daten(zeile, spalte)) = Left(zahlen(daten(zeile, spalte)), spalte - 1) & "1"  _
& Right(zahlen(daten(zeile, spalte)), datcol - spalte)
Next zeile
Next spalte
For zeile = 0 To zahlen.Count - 1
For tzeile = 0 To zahlen.Count - 1
If prüfung(zahlen.items()(zeile), zahlen.items()(tzeile), datcol) Then
If Not alle2.exists((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile))) Then
treffer2.Add (zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile)), 1
alle2.Add (zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile)), 1
alle2.Add (zahlen.keys()(tzeile) & " - " & zahlen.keys()(zeile)), 1
End If
End If
For ttzeile = 0 To zahlen.Count - 1
If prüfung2(zahlen.items()(zeile), zahlen.items()(tzeile), zahlen.items()(ttzeile),  _
datcol) Then
If Not alle3.exists((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " -  _
" & zahlen.keys()(ttzeile))) Then
treffer3.Add (zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " - " & _
zahlen.keys()(ttzeile)), 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " - " &  _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(ttzeile) & " - " &  _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(zeile) & " - " &  _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(ttzeile) & " - " &  _
zahlen.keys()(zeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(zeile) & " - " &  _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(tzeile) & " - " &  _
zahlen.keys()(zeile)) = 1
End If
End If
Next
Next
Next
Tabelle2.Columns("A:B").ClearContents
Tabelle2.Cells(1, 1) = "Lösung für Double"
Tabelle2.Cells(2, 1).Resize(treffer2.Count) = Application.WorksheetFunction.Transpose(treffer2. _
keys)
Tabelle2.Cells(1, 2) = "Lösung für Tripple"
Tabelle2.Cells(2, 2).Resize(treffer3.Count) = Application.WorksheetFunction.Transpose(treffer3. _
keys)
End Sub
Function prüfung(ByVal text1 As String, ByVal text2 As String, anzahl As Long) As Boolean
Dim stelle As Long
prüfung = True
For stelle = 1 To anzahl
If Mid(text1, stelle, 1) = 0 And Mid(text2, stelle, 1) = 0 Then
prüfung = False
Exit Function
End If
Next
End Function
Function prüfung2(ByVal text1 As String, ByVal text2 As String, ByVal text3 As String, anzahl  _
As Long) As Boolean
Dim stelle As Long
prüfung2 = True
For stelle = 1 To anzahl
If Mid(text1, stelle, 1) = 0 And Mid(text2, stelle, 1) = 0 And Mid(text3, stelle, 1) = 0  _
Then
prüfung2 = False
Exit Function
End If
Next
End Function

AW: VBA Lösung
01.09.2018 13:07:49
Matthias
Und noch eine Ergänzung. Da war noch ein kleiner Fehler drin. Zudem werden die Werte jetzt der Größe nach angegeben und sortiert. Ist jetzt auch etwas schneller.
Sub kombinationen()
Dim daten
Dim zeile As Long
Dim tzeile As Long
Dim ttzeile As Long
Dim spalt As Long
Dim datrow As Long
Dim datcol As Long
Dim zahlen As Object
Dim alle2 As Object
Dim alle3 As Object
Dim treffer2 As Object
Dim treffer3 As Object
Set zahlen = CreateObject("Scripting.Dictionary")
Set treffer2 = CreateObject("Scripting.Dictionary")
Set alle2 = CreateObject("Scripting.Dictionary")
Set treffer3 = CreateObject("Scripting.Dictionary")
Set alle3 = CreateObject("Scripting.Dictionary")
daten = Tabelle1.Range("K3:Q10")
datrow = UBound(daten, 1)
datcol = UBound(daten, 2)
For spalte = 1 To datcol
For zeile = 1 To datrow
If Not zahlen.exists(daten(zeile, spalte)) Then zahlen.Add (daten(zeile, spalte)),  _
String(datcol, "0")
zahlen(daten(zeile, spalte)) = Left(zahlen(daten(zeile, spalte)), spalte - 1) & "1"  _
& Right(zahlen(daten(zeile, spalte)), datcol - spalte)
Next zeile
Next spalte
For zeile = 0 To zahlen.Count - 1
For tzeile = zeile + 1 To zahlen.Count - 1
If prüfung(zahlen.items()(zeile), zahlen.items()(tzeile), datcol) Then
If Not alle2.exists((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile))) Then
treffer2.Add sortieren((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile)),  _
2), 1
alle2.Add (zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile)), 1
alle2.Add (zahlen.keys()(tzeile) & " - " & zahlen.keys()(zeile)), 1
End If
End If
For ttzeile = tzeile + 1 To zahlen.Count - 1
If prüfung2(zahlen.items()(zeile), zahlen.items()(tzeile), zahlen.items()(ttzeile),  _
datcol) Then
If Not alle3.exists((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " -  _
" & zahlen.keys()(ttzeile))) Then
treffer3.Add sortieren((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) _
& " - " & zahlen.keys()(ttzeile)), 3), 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " - " &  _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(ttzeile) & " - " &  _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(zeile) & " - " &  _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(ttzeile) & " - " &  _
zahlen.keys()(zeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(zeile) & " - " &  _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(tzeile) & " - " &  _
zahlen.keys()(zeile)) = 1
End If
End If
Next
Next
Next
Tabelle2.Columns("A:B").ClearContents
Tabelle2.Cells(1, 1) = "Lösung für Double"
Tabelle2.Cells(2, 1).Resize(treffer2.Count) = Application.WorksheetFunction.Transpose(treffer2. _
keys)
If treffer2.Count > 1 Then Tabelle2.Cells(2, 1).Resize(treffer2.Count).Sort Key1:=Tabelle2. _
Range("A2"), Order1:=xlAscending, Header:=xlGuess, Orientation:=xlTopToBottom
Tabelle2.Cells(1, 2) = "Lösung für Tripple"
Tabelle2.Cells(2, 2).Resize(treffer3.Count) = Application.WorksheetFunction.Transpose(treffer3. _
keys)
If treffer3.Count > 1 Then Tabelle2.Cells(2, 2).Resize(treffer3.Count).Sort Key1:=Tabelle2. _
Range("B2"), Order1:=xlAscending, Header:=xlGuess, Orientation:=xlTopToBottom
End Sub
Function prüfung(ByVal text1 As String, ByVal text2 As String, anzahl As Long) As Boolean
Dim stelle As Long
prüfung = True
For stelle = 1 To anzahl
If Mid(text1, stelle, 1) = 0 And Mid(text2, stelle, 1) = 0 Then
prüfung = False
Exit Function
End If
Next
End Function
Function prüfung2(ByVal text1 As String, ByVal text2 As String, ByVal text3 As String, anzahl  _
As Long) As Boolean
Dim stelle As Long
prüfung2 = True
For stelle = 1 To anzahl
If Mid(text1, stelle, 1) = 0 And Mid(text2, stelle, 1) = 0 And Mid(text3, stelle, 1) = 0  _
Then
prüfung2 = False
Exit Function
End If
Next
End Function
Function sortieren(ByVal text As String, stellen As Long) As String
Dim temp
Dim i As Long
Dim werte
temp = Split(text, " - ")
If stellen = 2 Then
If temp(0) > temp(1) Then text = temp(1) & " - " & temp(0)
Else
ReDim werte(1 To 3)
For i = 0 To 2
werte(i + 1) = CLng(temp(i))
Next
text = Application.WorksheetFunction.Small(werte, 1) & " - " & Application. _
WorksheetFunction.Small(werte, 2) & " - " & Application.WorksheetFunction.Small(werte, 3)
End If
sortieren = text
End Function

AW: VBA Lösung
02.09.2018 10:56:22
erichm
Hallo Matthias,
danke. Aber nach dem kopieren in ein Modul
wird in diesem Bereich ein Fehler angezeigt (hier fett = rot im Modul). Die notwendige Änderung bekomme ich nicht hin:
For ttzeile = tzeile + 1 To zahlen.Count - 1
If prüfung2(zahlen.items()(zeile), zahlen.items()(tzeile), zahlen.items()(ttzeile), _
datcol) Then
If Not alle3.exists((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " - _
" & zahlen.keys()(ttzeile))) Then

treffer3.Add sortieren((zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) _
& " - " & zahlen.keys()(ttzeile)), 3), 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(tzeile) & " - " & _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(zeile) & " - " & zahlen.keys()(ttzeile) & " - " & _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(zeile) & " - " & _
zahlen.keys()(ttzeile)) = 1
alle3.Item(zahlen.keys()(tzeile) & " - " & zahlen.keys()(ttzeile) & " - " & _
zahlen.keys()(zeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(zeile) & " - " & _
zahlen.keys()(tzeile)) = 1
alle3.Item(zahlen.keys()(ttzeile) & " - " & zahlen.keys()(tzeile) & " - " & _
zahlen.keys()(zeile)) = 1
End If
End If
Next
Next
Next
mfg
AW: VBA Lösung
02.09.2018 14:28:47
Matthias
Moin!
Ich vermute mal das es mit den Zeilenumbrüchen hier in der Darstellung zu tun hat. Die müsstest du rausnehmen. Um es einfacher zu machen, anbei deine Datei mit dem Code. Auf der Tabelle2, wo die Ergebnisse angezeigt werden, ist ein Button zum Starten.
https://www.herber.de/bbs/user/123698.xls
VG
AW: VBA Lösung
03.09.2018 12:16:39
erichm
Hallo Matthias,
danke für den Service. Habe das jetzt umfangreich getestet und bin auf ein Problem gestoßen, das ich mir nicht erklären kann:
Kann es sein, dass die Zahlen in der Matrix eine bestimmte Größe (Anzahl der Ziffern) nicht übersteigen darf? Im Code konnte ich nichts finden.
Aber der Code blockiert und startet nicht.
In der Anlage die Musterdatei mit einer weiteren Tabelle "Originalzahlen". Bei der Variante "Alternative" blockiert der Code - diese Zahlen habe ich in die Tabelle1 kopiert.
Wenn ich die anderen Zahlenblöcke reinkopiere klappt alles bestens.
https://www.herber.de/bbs/user/123707.xlsm
Vielleicht kannst Du bei Gelegenheit nochmals drüberschauen.
Danke.
mfg
AW: VBA Lösung
03.09.2018 19:51:32
Matthias
Moin!
Hier nochmal überarbeitet. DA war noch ein Fehler, wenn kein Treffer gefunden wurde. Bei deinen Alternativzahlen ist das Problem, dass es 53 der 56 Zahlen verschieden sind. Da findet man kein Trippel und erst recht kein Double. Auf Grund dessen erschien dann am Ende ein Fehler. Jetzt sollte der Fehler weg sein und wenn er fertig ist, erscheint eine Meldung.
Bitte mal testen.
https://www.herber.de/bbs/user/123722.xls
VG
AW: VBA Lösung
04.09.2018 18:25:24
erichm
Hallo Matthias,
danke - jetzt klappt alles (intensiv getestet).
mfg
Bin grad im WoMo-Urlaub, selten WLAN, daher ...
01.09.2018 17:40:09
lupo1
... wundere ich mich, dass niemand meine Anregung aufgegriffen hat.
:-)
Mal gucken, ob es in 2 Wochen noch aktuell ist.
AW: Erich hatte Deine Anregung aufgegriffen, ...
02.09.2018 16:49:37
neopa
Hallo lupo,
... hatte dazu aber geschrieben, dass er damit nicht zur Lösung kam.
Und ich hatte vorn herein einen anderen evtl. Lösungsweg per Formeln vor Augen und deshalb nachgefragt, wie seine Bedingungsdefinition denn wirklich zu interpretieren sei. Diese ist nun erst hier im thread präzisiert.
Gruß Werner
.. , - ...
vielleicht sollte erichm als Gast bei officelösung
03.09.2018 11:16:27
lupo1
schreiben, damit der Thread länger werden kann.
Zu 99% reicht herber zeitlich aus, aber hier sieht es ausnahmsweise anders aus.
AW: Zahlenkombinationen finden
03.09.2018 11:23:21
Peter
Hallo Erich,
so viele Beiträge, doch offensichtlich noch keine funktionierende Lösung. Ich finde die Problemstellung interessant und habe am Wochenende eine Lösung erarbeitet. Ich benötigte jedoch zwei zusätzliche Arbeitsblätter und hoffe, dies ist Deiner Sache nicht abträglich. Die Bearbeitung erfolgt in zahlreichen Schritten: von der Auflistung aller Zahlen unter Zuordnung der Spalten über die Erstellung von Teilergebnissen und zwei erweiterten Filterfunktionen.
In der 1. beiliegenden Datei wird in Tabelle 1 Dein Schema verwendet. Mit dem Befehl "Starten" werden die gewünschten Zahlen ermittelt und im unteren Teil von Tabelle 1 farblich markiert. Hier müssen alle im oberen Teil vorhandenen Zahlen auch in dem unteren Teil vorkommen.
https://www.herber.de/bbs/user/123705.xlsm
Die 2. Datei erlaubt jedwede Änderung der Zahlen im oberen Bereich von Tabelle 1. Die dort eingegebenen Zahlen werden im Laufe des Programms in den unteren Teil kopiert. Man kann also hiermit alle möglichen Tests mit verschiedenen Zahlenkombinationen durchführen. Darüberhinaus kann man in Tabelle 2 die Makroverarbeitung schrittweise verfolgen, indem man die Buttons der Reihe nach von links nach rechts anklickt. Nach jedem Klick sind die Ergebnisse in der Tabelle 2 sichtbar.
https://www.herber.de/bbs/user/123706.xlsm
Ich habe lange mit Excel 2007 getestet und glaube, nun keine "Macke" mehr im Programm zu haben. Falls doch, bitte melden. Auch wenn Deine Tests erfolgreich sind, wäre ich Dir für eine kurze Rückmeldung dankbar.
Mit freundlichem Gruß
Peter Kloßek
AW: Zahlenkombinationen finden
03.09.2018 12:26:08
erichm
Hallo Peter,
danke für die Mühe (mittlerweile haben sich Lösungen ergeben).
Die "Testvariante" bei der 2. Datei hört sich allerdings nochmals sehr interessant an, deswegen habe ich das näher angeschaut.
Ich habe aber nicht entdeckt, wo ich die "ausgewählten Zahlen eingeben kann / muss. Es erscheint immer wieder die 75(?).
Bei den Makros in Tabelle2 stoppt der Code beim "Makro600" dort:
SuchZ = Range("y5")
Range("J12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Find(What:=(SuchZ), After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

fett markiert sind die Fehlerzeilen.
Also interessant wäre es für uns wenn wir zwei bis drei Zahlen eingeben könnten, für die dann die Berechnungen stattfinden. Bin mir aber nicht sicher, ob dies mit "Test" gemeint war.
Danke
mfg
AW: Zahlenkombinationen finden
03.09.2018 18:22:34
Peter
Hallo Erich,
es geht bei Deinem Problem darum, die Zahlenkombination (1 bis 3 Zahlen) aus einem vorgegebenen Zahlenblock herauszufinden. Wo und in welchem Programm dann diese Kombination eingegeben werden soll, weiß ich nicht; und dies geht auch nicht aus Deinem Beitrag hervor. Die Zahl "75" ist ein Sonderfall,da die Zahl in allen 7 Spalten vorkommt, erfüllt diese einzige Zahl die Bedingungen. Ändere mal in z. B. 2 Spalten die "75" in eine andere Zahl und teste dann erneut.
Schönen Dank für den Fehlerhinweis. Auch in der 1. Datei habe ich noch eine kleine Macke gefunden. Ich überstelle Dir beide Dateien nocheinmal.
1. Datei
https://www.herber.de/bbs/user/123718.xlsm
2. Datei
https://www.herber.de/bbs/user/123719.xlsm
Die Spaltenbelegung der ausgewählten Zahl(en) ersiehst Du in der Tabelle 2 ab Spalte "W". Die ausgewählten Zahlen werden außerdem in dem unteren Teil der Tabelle 1 grün markiert.
Für weitere Fragen stehe ich gerne zur Verfügung.
Mit freundlichem Gruß
Peter Kloßek
AW: Zahlenkombinationen finden
07.09.2018 09:17:48
erichm
Hallo Peter,
hat etwas gedauert, alles getestet! Also die Makros laufen jetzt alle durch. Die grüne Markierung ist auch eine gute Idee!
Das "testen" bei der 2. Datei habe ich leider falsch interpretiert / verstanden; insofern benötige ich da keinen weiteren Input.
VIELEN DANK!
mfg

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige