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
.
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);"")