AW: sverweis ohne #NV, verw. Zeilen ermitteln
13.11.2004 09:54:28
Frank
Hallo Haxley,
habe dein Makro ein bisschen verändert. Kann es aber leider nicht testen, weil ich die Datei nicht habe (mach bitte ein Backup vor dem ausprobieren). Sowohl die Range in Spalte A als auch die in Spalte L wird nun genau festgelegt, es werden also nur die Zellen markiert, in denen was drin steht. Das gleiche müsste man noch für deine Sortierungen vornehmen. Aber ohne Beispieldatei kann ich Dir leider nicht viel weiterhelfen...
Gruß
Frank
Sub test1()
Dim Anzahl As Long
Dim Anzahl2 As Long
Dim VRange As Range
Dim V1Range As Range
Set VRange = Range("L2:L10000")
Set V1Range = Range("A2:A10000")
Anzahl = 10000 - 1 - Application.WorksheetFunction.CountBlank(VRange)
Anzahl2 = 10000 - 1 - Application.WorksheetFunction.CountBlank(V1Range)
If Anzahl = 0 Then Anzahl = 1
If Anzahl2 = 0 Then Anzahl2 = 1
Range("A1:K10000").Sort Key1:=Range("D2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1:K10000").Sort Key1:=Range("K2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns("L:L").Select
ActiveCell.FormulaR1C1 = ""
Range("L2").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-1]=RC[-1],""doppeleintrag"","""")"
Range("L2").Select
Selection.Copy
Range(Cells(2, 12), Cells(Anzahl + 1, 12)).Select
ActiveSheet.Paste
Range("L1").Select
Application.CutCopyMode = False
Selection.ClearContents
Dim i As Long ' Zeilenzähler
Dim tofind As Variant ' Hiernach wird gesucht
Dim found As Range ' Eine Fundstelle oder Nothing
tofind = "doppeleintrag"
If tofind = "" Then Exit Sub
Application.ScreenUpdating = False
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
Set found = Rows(i).Find(what:=tofind, LookIn:=xlValues, lookat:=xlWhole)
If Not found Is Nothing Then Rows(i).Delete
Next
Application.ScreenUpdating = True
Columns("L:L").Select
Selection.ClearContents
Range("L1").Select
Columns("A:A").Select
Range("A1:K10000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select
Worksheets("Tabelle1").Range("A:A").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("M:M")
Worksheets("Tabelle1").Range("B:B").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("A:A")
Worksheets("Tabelle1").Range("C:C").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("B:B")
Worksheets("Tabelle1").Range("M:M").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("C:C")
Worksheets("Tabelle1").Range("F:F").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("M:M")
Worksheets("Tabelle1").Range("I:I").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("F:F")
Worksheets("Tabelle1").Range("G:G").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("N:N")
Worksheets("Tabelle1").Range("M:M").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("G:G")
Worksheets("Tabelle1").Range("J:J").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("I:I")
Worksheets("Tabelle1").Range("E:E").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("J:J")
Worksheets("Tabelle1").Range("H:H").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("E:E")
Worksheets("Tabelle1").Range("N:N").Cut
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range("H:H")
Range("F1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "TECHNISCHE_DATEN"
Range("F2").Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Range("A2").Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[1],Tabelle2!R1C1:R100C2,2,FALSE)),"""",VLOOKUP(RC[1],Tabelle2!R1C1:R100C2,2,FALSE))"
Range("A2").Select
Selection.Copy
Range(Cells(2, 1), Cells(Anzahl + 1, 1)).Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "WG-ID"
Range("A2").Select
End Sub