Unerwartete Probleme
20.03.2017 16:18:40
Christian
Hallo Werner,
ich muss mich leider nochmal bei dir melden. Ich schaffe es einfach nicht die Formel an meine neuen Bedinungen anzupassen. Dieses mal soll die Spalte für den Sortier und Duplikate entfernen Vorgang A sein, also gleich die erste und die Werte ab B1 beginnen. Simpel dachte ich aber ich verstehe Teile vom Code nicht.
Public Sub Duplikate_Material()
Dim loLetzte As Long
Dim loLetzte1 As Long
Dim letzteSpalte As Long
Application.ScreenUpdating = False
With tbl_UAE01 'Codename (Indexname außerhalb des gültigen Bereichs)
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'Anzahl der Zeilen in der ersten Spalte _
der ersten Tabelle ermitteln
.Range(.Cells(2, 1), .Cells(loLetzte, 1)).Copy _
Sheets("tbl_MatrNr").Range("A1") 'Kopieren der Werte in Spalte 1 ab Zeile 2 und übertragen _
in Zelle A1 in der zweiten Tabelle
End With
With tbl_MatrNr
'Zwischenspeicherung der Werte, Sortierung
'Spalte muss frei bleiben da ansonsten Werte überschrieben werden!!
.Range("A1:A").RemoveDuplicates Columns:=1, Header:=xlNo 'In der zwischenspalte A werden _
die Duplikate entfernt
loLetzte1 = .Cells(.Rows.Count, 1).End(xlUp).Row 'Danach wird die neue Anzahl an Zeilen _
ermittelt
.Sort.SortFields.Clear 'Vorsortierung löschen
.Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'Werte in der _
zwischenspalte A sortieren
End With
With tbl_MatrNr.Sort '
.SetRange Range("A1:A" & loLetzte1) 'Sortieren mit der neuen Anzahl an Zeilen
.Header = xlNo 'Keine Headerformatierung
.MatchCase = False '?
.Orientation = xlTopToBottom 'Text orientierung
.Apply 'Sortierung anwenden
End With
With tbl_MatrNr
.Range("A1:A" & loLetzte1).Copy 'Kopieren mit neuen Bereich
.Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True 'Einfügen der bearbeitenden Werte ab B1 in transponieren Form
letzteSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column 'Ermittlung der letzen _
Spalte (Zeile 1, Ermittlung Spalte)
.Range("B1").Copy
.Range(.Cells(1, 2), .Cells(1, letzteSpalte)).PasteSpecial xlPasteFormats
.Range("A1:A" & loLetzte1).ClearContents
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Zum besseren Verständnis habe ich den Code so gut es geht kommentiert. Spätestens ab den letzten Block verstehe ich nicht ganz die Vorgehensweise
https://www.herber.de/bbs/user/112302.xlsx
Eine Beispiel Tabelle: A1 soll zum Zwischenspeichern des Codes sein und ab B1 die eindeutigen Werte aus der ersten Spalte in der tbl_UAE01.
Vielen lieben Dank für eure Unterstützung
Viele Grüße
Christian