Zeilen ergänzen- Großes Dokument
#1
Hallo liebe Excel Experten,

ich habe folgendes Problem,

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.


Liebe Grüße,

Manuel


Angehängte Dateien Thumbnail(s)
   
Top
#2
hier ist die Tabelle


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 306,47 KB / Downloads: 10)
Top
#3
hat keiner eine Lösung für dieses Problem?
Top
#4
Hallo,

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?
Top
#5
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.
Top
#6
Hallo,

darf ich fragen, was der Sinn der Aktion sein soll?
Top
#7
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.
Top
#8
Hallo Manuel,

probiere es mal damit:
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:
  • lu11pasi
Top
#9
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 LongAs Long1996
    With Tabelle1
        For i 
2 To .Cells(Rows.Count1).End(xlUp).Row
            If 
.Cells(i5) <> j Then
                
.Rows(i).Insert
                
.Cells(i1).Resize(14).Value Cells(11).Resize(14).Value
                
.Cells(i5) = j
            End 
If
 
           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:
  • lu11pasi
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste