PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten aus Excel Tabelle extrahieren


boxleitnerb
2011-07-09, 13:48:56
Hi!

Ich hab eine Exceltabelle mit vielen Profileinträgen und möchte nur bestimmte Spalten extrahieren bzw. alles Zeilen löschen und nur die behalten, die in der ersten Spalte einen bestimmten Wert haben.

Beispiel:

Profile "Crysis 2"
ShowOn GeForce
ProfileType Application
Executable "crysis2demo.exe"
Executable "crysis2.exe"
Setting ID_0x00a06946 = 0x000240f5
Setting ID_0x1033cec1 = 0x00000003
Setting ID_0x1033cec2 = 0x00000002
Setting ID_0x1033dcd2 = 0x00000004
Setting ID_0x1033dcd3 = 0x00000004
Setting ID_0x1095def8 = 0x02506405
Setting ID_0x10ecdb82 = 0x00000001
EndProfile

Ich möchte ausschließlich die fettgedruckten Zeilen behalten. Der erste Wert (Setting ID 0x00a06946 und 0x1095def8) ist immer gleich für die beiden Zeilen. Und natürlich brauche ich noch die erste Zeile, sonst weiß ich ja nicht, zu welcher Anwendung diese Werte gehören.

Wie stelle ich das am geschicktesten an? Danke schonmal.

bulla
2011-07-09, 15:30:48
Spontan: SVerweis

Beispiel:

Deine Tabelle ist so aufgebaut:
A1: Profile ------ B1: Crysis2
A2: Showon ------ B2: Geforce
usw.


Am besten vergibst du diesem Bereich einen Namen, z.B. A1:B10 markieren und oben links "Profile1" eingeben.

Nun erstellst du ein neues Tabellenblatt (oder auch auf demselben möglich, je nachdem, wie du es möchtest), und gibst diese Werte ein:

A1: Profile ------ B1: =SVerweis(A1; Profile1; 2; falsch)
usw.

evtl. statt der "2" eine "1" eintragen, ich komm da jedesmal durcheinander. Diese Zahl bezeichnet die Anzahl der Spalten, die du in "Profile1" nach rechts gehst und diesen Wert erhältst, in dem Fall also "Crysis2".

boxleitnerb
2011-07-09, 19:35:30
Thx, ich bin jetzt soweit, dass es ganz gut klappt - eines aber bereitet mir übelste Kopfzerbrechen:

Ich habe folgenden Eintrag:

http://www.abload.de/img/captureqn3z.png (http://www.abload.de/image.php?img=captureqn3z.png)

Ich will, damit ich die Liste nachher ordentlich bearbeiten kann, unter jedem Spiel Zeilen für DX10 und DX9 Bits stehen haben. Also 3 Zeilen pro Spiel, dann Leerzeile und dann der nächste Eintrag.

Folgendes Makro hab ich geschrieben:

Public Sub InsertBlankRow_DX9_DX10()
Dim Last As Long
Dim Row As Long
Dim TextPosProf As Integer

Application.ScreenUpdating = False
Last = IIf(IsEmpty(Range("B65536")), Range("B65536").End(xlUp).Row + 1, 65536)

For Row = Last To 1 Step -1
TextPosProf = InStr(1, Cells(Row, 1), "Profile")

If TextPosProf = 1 Then
If (Cells(Row + 1, 1)) = "DX10" And (Cells(Row + 2, 1)) = "" Then
Rows(Row + 2).Select
Selection.Insert
Cells(Row + 2, 1).Value = "DX9"
Cells(Row + 2, 2).Value = "n/a"
End If

If (Cells(Row + 1, 1)) = "DX9" And (Cells(Row + 2, 1)) = "" Then
Rows(Row + 1).Select
Selection.Insert
Cells(Row + 1, 1).Value = "DX10"
Cells(Row + 1, 2).Value = "n/a"
End If

If (Cells(Row + 1, 1)) = "" Then
Rows(Row + 1).Select
Selection.Insert
Selection.Insert
Cells(Row + 1, 1).Value = "DX10"
Cells(Row + 1, 2).Value = "n/a"
Cells(Row + 2, 1).Value = "DX9"
Cells(Row + 2, 2).Value = "n/a"
End If

End If

Next
Application.ScreenUpdating = True
End Sub


Für Spiel 1-3 klappt das auch wunderbar. Es wird eine Zeile (Spiel 1 und 2) bzw. keine Zeile (Spiel 3) mit den Einträgen hinzugefügt. Bei Spiel 4 aber passiert etwas, was ich partout nicht verstehe:

Sind die Zellen in dem blau markieren Bereich nicht leer, funktioniert das Makro. Sind sie aber leer, klappt es nicht! Warum ist das so?

bulla
2011-07-10, 12:35:58
Range("B65536").End(xlUp).Row + 1
Damit müsstest du als Wert Reihe 12 erwarten, da unter B11 alle Zeilen in dieser Spalte leer sind.