Hallo,
folgende Situation.
Ich habe eine Suchabafragenliste mit Zahlen (Spalte D). Diese Suchbegriffe möchte ich in einer Liste suchen (Spalte A). Gibt es die Werte aus Spalte D öfters, soll er mir alle Ergebnisse anzeigen. Dabei ist zu beachten, dass die Suchabfragenliste nicht 1:1 gesucht werden soll, sondern nur als "enthält". Also z.B. wenn jetzt "1" gesucht wird, dass auch "10" oder "111" gesucht wird.
[
attachment=40444]
SVerweis scheint hierbei nicht die richtige Lösung zu sein.
Es gäbe noch die Indexfunktion bzw. Aggregatefunktion, aber auch nicht sicher.
habt ihr eine Idee was ich nutzen kann?
Oder gibt es auch eine Option über das Datenschnittool?
Das Problem ist ja hierbei, dass die Ergebnisliste ja dynamisch sein wird je nach Anzahl der Suchtreffern.
Wie ich es mir vorstelle ist in Spalte G & H zu sehen.
[
attachment=40443]
Danke für jeden Tipp
Hallo
ich komme mit meiner Lösung auf ein ganz anderes Ergebnis wie in der Vorlage! bei mir kommt: ABCDE viermal vor statt zweimal wie im Beispiel!
Vielleicht stimmt meine Auswerte Logik nicht, dann musst du sie mir bitte noch einmal präziser erklären. Mein Makro vergleicht Bei Zahl 1 alle Zeilen mit ABCDE und das kommt optisch sichbar tatsächlich viermal vor.
What nüü .... ??? Ist mein Beispiel so für dich brauchbar???
mfg Gast 123
Hallo @Gast 123,
der User Che.Guevara will die Spalte D mit der Spalte A (nicht B !!) vergleichen und zwar so, dass die Werte der Spalte D in den Werten der Spalte A enthalten sein sollen (d.h. die Werte der Spalte A müssten eigentlich Textwerte sein) und nicht bloß gleich diesen Werten sein sollen.
Dann ergibt sich tatsächlich das, was als gewünschtes Ergebnis ausgewiesen ist.
Hallo
sorry, mein Denkfehler, hatte die Logik falsch verstanden. Mit dem geänderten Code klappt es, gleiches Ergebnis.
mfg Gast 123
Code:
Sub Suchabfrage2()
Dim AC As Range, z, lzD, lzG As Long
Dim rFind As Range, Adr1 As String
lzD = Cells(Rows.Count, 4).End(xlUp).Row
lzG = Cells(Rows.Count, 7).End(xlUp).Row
Range("G2:H" & lzG).ClearContents
z = 1 '1.Zeile in Spalte G (-1)
For Each AC In Range("D2:D" & lzD)
Set rFind = Columns(1).Find(What:=AC, After:=[a1], LookIn:=xlFormulas, lookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
Adr1 = rFind.Address
Do
z = z + 1
Cells(z, 7) = AC.Value
Cells(z, 8) = rFind.Offset(0, 1).Value
Set rFind = Columns(1).FindNext(rFind)
Loop Until rFind.Address = Adr1
Else
Cells(z + 1, 7) = AC.Value
End If
Next AC
End Sub
Hallo Che.Guevara,
hier eine Formellösung:
Spalte E
mit SUMMENPRODUKT ermitteln, wie oft jeder Suchbegriff in Spalte A vorkommt
Spalte F
die Suchbegriffe entsprechend ihrer Anzahl untereinander auflisten
(Formel gefunden hier:
http://www.office-loesung.de/ftopic387660_0_0_asc.php)
Spalte G
auflisten der Ergebnisse mit INDEX/AGGREGAT
Arbeitsblatt mit dem Namen 'Tabelle1' |
| A | B | C | D | E | F | G |
1 | Nr. | Ergebnis | | Suchabfragenliste | Anzahl | Suchkriterium | Ergebnis |
2 | 1 | ABCDE | | 1 | 3 | 1 | ABCDE |
3 | 2 | ABCDEF | | 2 | 2 | 1 | ABCDEFG |
4 | 11 | ABCDEFG | | 3 | 1 | 1 | MRT |
5 | 3 | ABCDEGH | | 4 | 2 | 2 | ABCDEF |
6 | 2 | ABCDEFGHI | | 5 | 0 | 2 | ABCDEFGHI |
7 | 44 | xyz | | | | 3 | ABCDEGH |
8 | 4 | abcx | | | | 4 | xyz |
9 | abcd1 | MRT | | | | 4 | abcx |
Zelle | Formel |
E2 | =WENN(D2<>"";SUMMENPRODUKT(--(ISTZAHL(SUCHEN(D2;$A$2:$A$17))));"") |
F2 | =$D$2 |
F3 | =WENN(ZEILE(A2)>SUMME($E$2:$E$9);"";WENN(ZEILE(A1)=SUMME($E$2:INDEX($E$2:$E$9;VERGLEICH(F2;$D$2:$D$9;0)));INDEX($D$2:$D$9;VERGLEICH(F2;$D$2:$D$9;0)+1);F2)) |
G2 | =WENN(F2<>"";INDEX($B$2:$B$20;AGGREGAT(15;6;ZEILE($B$2:$B$20)/ISTZAHL(SUCHEN(F2;$A$2:$A$20))-1;ZÄHLENWENN($F$2:F2;F2)));"") |
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
siehe angehängte Beispieldatei
Gruß
Fred