Clever-Excel-Forum

Normale Version: 2 Kriterien in Suchmatrix
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,

(10.03.2017, 14:27)Monsterbabe schrieb: [ -> ]Leider habe ich waas ganz wichtiges vergessen zu erwähnen.

Wenn es einen Alfa 33 gäbe, welcher von 1995-2002 gebaut wurden ist mit der #ID 9999 soll Excel mir natürlich dies anzeigen, statt 1019.

Dann mache mal eine vollständige Liste in Tabelle 1 (die mit den IDs), so wie es jetzt ist, fehlt da ja einiges.
Hallo,

hab hier auch mal eine simple Vba Lösung.
Potenzial nach oben ist da.


Code:
Sub tu_mal()
Dim i As Long, j As Long, jj As Long
Dim lngZ As Long

Dim wks As Worksheet
Set wks = Sheets("Tabelle2")
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
jj = 2

Application.ScreenUpdating = False
With Sheets("Tabelle1")
 lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
 For i = 2 To lngZ
   For j = Year(.Cells(i, 4)) To Year(.Cells(i, 5))
     wks.Cells(jj, 6) = .Cells(i, 1) & "#" & .Cells(i, 3) & "#" & j
     wks.Cells(jj, 7) = .Cells(i, 2)
     jj = jj + 1
   Next j
 Next i
End With

With wks
 lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
 .Range(.Cells(2, 5), .Cells(lngZ, 5)).FormulaLocal = "=Index($G$2:$G$" & jj - 1 & ";Vergleich(C2&""#""&B2" & "&""#""&D2; $F$2:$F$" & jj - 1 & "; 0))"
 .Range(.Cells(2, 5), .Cells(lngZ, 5)).Value = .Range(.Cells(2, 5), .Cells(lngZ, 5)).Value
 Range("F2:G" & jj - 1).ClearContents
End With
Application.ScreenUpdating = True

End Sub


Ich nutze in Tabelle2 die Spalten F:G als Hilfsspalten.
Das Ergebnis ist auch in Tabelle2
Hallo

wie ich sehe gibt es auch von Attila eine gute Lösung. 

Mich interessiert wo genau der Fehler auftritt? Wenn man im Fehlerdialog auf "Debuggen" klickt müsste die fehlerhafte  Makrozeile gelb gefaerbt angezeigt werden. Mich interessiert welche Zeile den Fehler verursacht? Danach bitte im "Run Menü" Reset anklicken, oder Datei schliessen. 

mfg  Gast 123
@Gast 123: Die gelbe Zeile ist hier zu sehen:

bisJahr = CInt (Right (AC.Cells(1, 5) , 4) )

Da scheint etwas nicht zu passen.

Das Makro von Attila funktioniert ist der Testdatei optimal. Ich wende den jetzt bei der großen Originalliste an und lass mich überraschen.

@Attila: Danke schon mal! Sieht gut aus Wink.
Hi,

(13.03.2017, 09:53)Monsterbabe schrieb: [ -> ]Ich wende den jetzt bei der großen Originalliste an und lass mich überraschen.

am besten immer an einer Kopie der Originaldatei!
Vielen Dank an alle.

Das Makro funktioniert tadellos!

Ciao
Oder du arbeitest in VBA:


Code:
Sub M_snb()
    sn = Sheet1.Cells(1).CurrentRegion
    sp = Sheet2.Cells(1).CurrentRegion
    
    For j = 2 To UBound(sp)
       For jj = 2 To UBound(sn)
          If sp(j, 2) & sp(j, 3) = sn(jj, 3) & sn(jj, 1) And sp(j, 4) >= Year(sn(jj, 4)) And sp(j, 4) <= Year(sn(jj, 5)) Then Exit For
       Next
       If jj <= UBound(sn) Then sp(j, 5) = sn(jj, 2)
    Next
    
   Sheet2.Cells(1).CurrentRegion = sp
End Sub

oder du verwendest Excel Formeln:

In Tabelle2, Zelle F2:


Code:
=IFERROR(INDEX(Tabelle1!$B$2:$B$6;SUMPRODUCT((B2&$C2=Tabelle1!$C$2:$C$6&Tabelle1!$A$2:$A$6)*(D2>=YEAR(Tabelle1!$D$2:$D$6))*(D2<=YEAR(Tabelle1!$E$2:$E$6))*ROW($1:$5));1);"")
Seiten: 1 2