Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (10.03.2017, 15: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.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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
Gruß Atilla
Registriert seit: 12.03.2016
Version(en): Excel 2003
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
Registriert seit: 10.03.2017
Version(en): 2016
13.03.2017, 10:53
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2017, 10:53 von Monsterbabe.)
@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 .
Registriert seit: 10.04.2014
Version(en): 2016 + 365
13.03.2017, 11:06
(Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2017, 11:06 von Rabe.)
Hi, (13.03.2017, 10: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!
Registriert seit: 10.03.2017
Version(en): 2016
Vielen Dank an alle.
Das Makro funktioniert tadellos!
Ciao
Registriert seit: 29.09.2015
Version(en): 2030,5
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);"")
|