Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro anpassen

Makro anpassen
wafi
Hallo Excelfreunde
Ich habe eine Datei mit 33 Tabellen (1-31 für jeden Tag im Monat) und 2 Auswertungstabellen (Daten, Auswertung)
In der Tabelle Daten lese ich mit diesem Makro die Einträge aller 31 Tage aus und übertrage sie in die Tabelle Daten in die Spalten A,B,C.
Soweit klappt ja noch alles perfekt.
In Spalte A stehen nun mehrere hundert Autokennzeichen.
Ich hätte nun gerne, dass in Spalte E jedes Kennzeichen das in Spalte A vorkommt dort 1x untereinander aufgelistet wird.
Mit der Formel WennZählenwenn und anschließend Filter funktioniert zwar, ist aber für die Weiterverarbeitung leider nicht Zielführend.
Kann mir hier jemand mal weiter helfen.
Danke
Gruß wafi

Sub KennzeichenAuslesen()
Worksheets("Daten").Range("A7:C5230").ClearContents
b = 6 'Zeilenbeginn wo geschrieben
For y = 1 To 31
For a = 7 To 172 'lesen von bis
If Worksheets(y).Range("E" & a) = "" Then a = 172 ' Abbruch wenn Zelle leer
If Worksheets(y).Range("E" & a) > "" Then ' von wo ausgelesen wird
b = b + 1
' Teil 1 SchreibRoutine - Teil 2 LeseRoutine
Worksheets("Daten").Range("A" & b) = Worksheets(y).Range("E" & a) 'Kennz
Worksheets("Daten").Range("B" & b) = Worksheets(y).Range("M" & a) 'MAX
Worksheets("Daten").Range("C" & b) = Worksheets(y).Range("Q" & a) 'IST
End If
Next a
Next y
'Sortieren ab A7 bis C5320
'ActiveSheet.Range("A7:C5320").Select
'Selection.Sort Key1:=ActiveSheet.Range("A7"), Order1:=xlAscending, Header:=xlGuess
'Sortieren ab E7 bis E5320
'ActiveSheet.Range("E7:E5320").Select
' Selection.Sort Key1:=ActiveSheet.Range("E7"), Order1:=xlAscending, Header:=xlGuess
Range("B8").Select 'Cursor setzen
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro anpassen
14.10.2011 13:45:12
Heiko
Moin Wafi,
ich hoffe du arbeitest nicht in Flensburg und richtest über unser aller Punkte ;-)
Aber so könnte es gehen, habe ich noch in meinen alten Beispielen gefunden.
Option Explicit

Public Sub KennzeichenAuslesen()
Dim intY As Integer, intA As Integer, intB As Integer
Dim arrKennzeichen As Variant
Worksheets("Daten").Range("A7:C5230").ClearContents
intB = 6 'Zeilenbeginn wo geschrieben
For intY = 1 To 2
For intA = 7 To 172 'lesen von bis
If Worksheets(intY).Range("E" & intA) = "" Then intA = 172 ' Abbruch wenn Zelle leer
If Worksheets(intY).Range("E" & intA) > "" Then ' von wo ausgelesen wird
intB = intB + 1
Worksheets("Daten").Range("A" & intB) = Worksheets(intY).Range("E" & intA) 'Kennz
Worksheets("Daten").Range("B" & intB) = Worksheets(intY).Range("M" & intA) 'MAX
Worksheets("Daten").Range("C" & intB) = Worksheets(intY).Range("Q" & intA) 'IST
End If
Next intA
Next intY
arrKennzeichen = Sortierte_Unikate(Range("A7:A5230"))
' Das End der Liste in A könnte man natürlich auch flexibel gestalten.
Worksheets("Daten").Range("E1").Resize(UBound(arrKennzeichen)) = arrKennzeichen
Range("B8").Select 'Cursor setzen
End Sub


Public Function Sortierte_Unikate(rngVonWo As Range) As Variant
Dim objDic As Object
Dim vntIn As Variant
Dim L As Long
Dim vntOut As Variant
vntIn = rngVonWo.Value
Set objDic = CreateObject("Scripting.Dictionary")
For L = LBound(vntIn) To UBound(vntIn)
objDic(CStr(vntIn(L, 1))) = 0
Next
vntOut = objDic.keys
QuickSort vntOut
Sortierte_Unikate = WorksheetFunction.Transpose(vntOut)
Set objDic = Nothing
End Function


Public Sub QuickSort(vSort As Variant, _
Optional ByVal lngStart As Variant, _
Optional ByVal lngEnd As Variant)
If IsMissing(lngStart) Then lngStart = LBound(vSort)
If IsMissing(lngEnd) Then lngEnd = UBound(vSort)
Dim i As Long
Dim j As Long
Dim h As Variant
Dim x As Variant
i = lngStart: j = lngEnd
x = vSort((lngStart + lngEnd) / 2)
Do
While (vSort(i)  x): j = j - 1: Wend
If (i  j)
If (lngStart 

Gruß Heiko
Anzeige
AW: Makro anpassen
14.10.2011 15:50:03
wafi
Hallo Heiko S.
Vielen Dank für deine schnelle Hilfe.
Es ist genau das was ich wollte.
Ein kleines Manko habe ich allerdings noch gesehen, es gibt einen Unterschied zwischen Groß und Kleinbuchstaben.
Nun kommt es aber manchmal vor, daß Kennzeichennummern einmal AB 123 XY, Ab 123 XY, AB 123 Xy geschrieben werden und dann wird es als 3 Fahrzeugen gewertet obwohl es in Wirklichkeit nur eines ist.
Gibt es dafür noch eine Abhilfe um sowas zu verhindern.
Wäre echt super, danke
Gruß
wafi
Gruß
wafi
AW: Makro anpassen
16.10.2011 18:00:51
Heiko
Hallo Wafi,
einfach diese Zeile
Worksheets("Daten").Range("A" & intB) = Worksheets(intY).Range("E" & intA) 'Kennz
in diese Zeile ändern.
Worksheets("Daten").Range("A" & intB) = UCase(Worksheets(intY).Range("E" & intA)) 'Kennz
Dann sollte es alufen.
Gruß Heiko
Anzeige
AW: Makro anpassen
17.10.2011 07:36:22
wafi
Vielen Dank
Eine wirklich perfekte Lösung.
Wünsche einen schönen Wochenbeginn.
Gruß
wafi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige