Re: VLOOKUP in Excel 2000
08.06.2003 19:08:56
Sven
Moin Hajo !Danke erstmal. Das funzt ja, wenn ich jetzt aber den Sverweis nur in VBA verwenden möchte, dann haut er Grundsätzlich bei der Übergabe an ein Objekt die vorhingenannte Fehlermeldung raus.
Hast du ne Lösung parat ?
Für's Verständnis :
Ich habe in der Tabelle "einige" ca. 20000 Zeilen Text, 88 Datensätze die durch eine Zelle mit dem Inhalt CHR(12) getrennt werden. Nun müssen diese Datensätze sortiert werden und Zeilenweise abgespeichert werden zwecks weiterverarbeitung in DBMS. In der Tabelle "Konstanten" sind die Begriffe abgebildet, die Konstnt sind, soll heissen, an diesen Begriffen erkenne ich bestimmte Datenfelder. Nun soll Excel die Zellen durchlaufen und Prüfen, ob die aktuelle Zelle in den Konstanten ist, wenn ja, soll er einen Wert ausgeben und die eigentliche Verarbeitung der Werte danach findet automatisch statt. Momentane Lösung ist eine Select Case Else Anweisung, die aber schon für die ersten Paar Zeilen sehr mühsam ist. Hier das Beispiel :
Sub main()
Dim x, y, k, spalte, zz, zeiger, zeile As Variant
Dim i As Integer
Dim s, land As String
Dim curcell As Object
Dim rowmax As Long
Dim ecsit As Boolean
rowmax = 20000
s = Chr(12)
spalte = 1
k = 2
x = 1
y = 1
zeile = 1
zz = 1
zeiger = 2
Set curcell = Workbooks("einige.xls").Worksheets("einige").Cells(y, x)
For i = 1 To rowmax
If curcell = s Then
zeile = zeile + 1
Do
Select Case Left(curcell.Offset(zeiger, 0), 9)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(2, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 7) = Right(curcell.Offset(zeiger, 0), 4)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(3, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 8) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 10)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(4, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 9) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 14)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(5, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 10) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 11)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(6, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 11) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 15)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(7, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 12) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 12)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(8, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 13) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 13)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(9, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 14) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)))
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(10, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 15) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 18)
Case Else
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, zz) = Left(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)))
zz = zz + 1
End Select
zeiger = zeiger + 1
If Left(curcell.Offset(zeiger, 0), 12) = "Phone Number" Or Left(curcell.Offset(zeiger, 0), 14) = "E-Mail Address" Then
ecsit = True
Else
ecsit = False
End If
Loop While ecsit = False
End If
zz = 1
zeiger = 2
y = y + 1
Set curcell = Workbooks("einige.xls").Worksheets("einige").Cells(y, x)
Next i
End Sub
Ich bin der Meinung, mit einem SVERWEIS liesse sich die ganze Sache viel einfacher Lösen, bekomme aber wie gesagt immer diese Fehlermeldungen.
Vielen Dank im Voraus.
Gruß
Sven