ich habe Länderdaten runtergeladen jedoch muss ich die Tabelle verändern. Gerade zeigt es alle Länder nacheinander an (Spalte A) und die werte (F) zu der dazugehörigen Zeit (E). Wie ihr, wenn ihr die Tabelle öffnet, sehen könnt, fehlen die Zeilen für die Jahre 1997, 1999, 2001 und 2017. Ich muss, um mit diesen Daten weiter zu arbeiten, die Tabelle wie in Tabelle Ziel anzeigen. Ich hoffe jemand kann mir dabei helfen.
was genau ist denn Dein Ziel? Sehe ich das richtig, dass Du eine Auflistung mit den Jahren haben möchtest, welche sich nicht in der Liste befinden? Wie sehen Deine Rohdaten aus?
04.12.2017, 13:13 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 13:13 von lu11pasi.)
mein Ziel ist, dass die Tabelle für jedes Land Zellen für den Zeitraum von 1996 bis 2017 hat, jedoch sind bei den Rohdaten die Jahre 1997, 1999, 2000 und 2017 nicht vorhanden, da es für diese Jahre keine Werte gibt. Jedoch ist es mir egal ob in der Spalte Value Werte vorhanden sind oder nicht, es geht mir lediglich darum, dass jedes Land pro Jahr (1996 bis 2017) eine Zeile bekommt. Das Bild zeigt wie die Tabelle aussehen soll, ich habe die Zellen die eingefügt werden müssen rot markiert, jedoch habe ich das nur für 1 Land gemacht, brauche jedoch Hilfe bei den fehlenden 213 Ländern.
ich brauche diese Daten so um dann weiter damit zu arbeiten, es ist ein Projekt von der Uni. Es geht um Ursachen des Resourcenfluchs und Control of Corruption ist eine Variable davon.
Sub JahreErgaenzen() Dim lngZ As Long Application.ScreenUpdating = False For lngZ = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(lngZ, 1).Value = Cells(lngZ - 1, 1).Value Then If Cells(lngZ, 5).Value - Cells(lngZ - 1, 5).Value > 1 Then Rows(lngZ).Insert Cells(lngZ, 1).Resize(1, 4).Value = Cells(lngZ - 1, 1).Resize(1, 4).Value Cells(lngZ, 5).Value = Cells(lngZ + 1, 5).Value - 1 End If End If Next lngZ Application.ScreenUpdating = True End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • lu11pasi
04.12.2017, 15:35 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 15:51 von Jonas0806.)
Hi Uwe,
Dein Code berücksichtig allerdings keine fehlenden Anfangs- bzw. Endjahre.
Ich habe einen ähnlichen Code, ich sucher aber noch nach einer performanteren Arraylösung, ohne einzelne Zugriffe.
edit:
Da mir aktuell keine schöne Arraylösung einfällt, werfe ich mal meine Version mit Einzelnen Zellzugriffen in die Runde, welche etwas stabiler in Bezug auf die Jahre ist.
PHP-Code:
Option Explicit
Sub jonas0806() Dim i As Long, j As Long: j = 1996 With Tabelle1 For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(i, 5) <> j Then .Rows(i).Insert .Cells(i, 1).Resize(1, 4).Value = Cells(i - 1, 1).Resize(1, 4).Value .Cells(i, 5) = j End If j = j + 1 If j = 2017 Then j = 1996 Next i End With End Sub
Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag 28 • lu11pasi