Anzeige
Archiv - Navigation
1100to1104
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

Knifflige Aufgabe für VBA

Knifflige Aufgabe für VBA
Gregor
Hallo zusammen
Ich muss aus einem Datensatz für eine Priorisierung einen Auszug erstellen.
Zum besseren Verständnis habe ich euch eine vereinfachte Musterdatei erstellt.
Aufgabe:
Im Blatt Datensatz muss je innerhalb der Zeilen Name 1, dann Name 2, usw. aus Spalte D die höchste Priorisierung (Zahlen 1 bis 4) definiert werden und anschliessend bei mehreren gleichen Priorisierungen, also bei zwei 4, die Zeile mit der kleinsten Jahreszahl definiert und in Blatt Auszug kopiert werden.
Zur Veranschaulichung habe ich in Spalte F mit einem x bezeichnet, welche Zeilenangaben übernommen werden müssen. In der Originaldatei fehlen natürlich die Angaben mit x. Jahreszahlen und Prio ändern, weshalb diese Auszüge nur automatisiert vorgenommen werden können.
Wie kann ich das mit VBA lösen?
https://www.herber.de/bbs/user/64529.xls
Vielen Dank und Gruss
Gregor

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Knifflige Aufgabe für VBA
18.09.2009 13:15:47
fcs
Hallo Gregor,
hier mein Lösungsvorschlag
Gruß
Franz
Sub Auszug()
Dim wksAuszug As Worksheet, wksData As Worksheet
Dim ZeileData As Long, ZeileAuszug As Long, bolNewTop As Boolean
Dim strName As String, Element As String, Jahr As Long, Prioritaet As Long
Set wksData = Worksheets("Datensatz")
Set wksAuszug = Worksheets("Auszug")
With wksAuszug
'Altdatenlöschen im Auszug
.Range(.Cells(2, 1), .Cells(2, 1).End(xlDown).Offset(0, 3)).ClearContents
ZeileAuszug = 1
End With
With wksData
For ZeileData = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(ZeileData, 1)) Then
'Neuer name, Daten in Auszug übertragen
If strName  "" Then
With wksAuszug
ZeileAuszug = ZeileAuszug + 1
.Cells(ZeileAuszug, 1) = strName
.Cells(ZeileAuszug, 2) = Element
.Cells(ZeileAuszug, 3) = Jahr
.Cells(ZeileAuszug, 4) = Prioritaet
End With
End If
strName = .Cells(ZeileData, 1)
Element = .Cells(ZeileData, 2)
Jahr = .Cells(ZeileData, 3)
Prioritaet = .Cells(ZeileData, 4)
Else
If Prioritaet  .Cells(ZeileData, 3) Then
bolNewTop = True
Else
bolNewTop = False
End If
If bolNewTop = True Then
Element = .Cells(ZeileData, 2)
Jahr = .Cells(ZeileData, 3)
Prioritaet = .Cells(ZeileData, 4)
End If
End If
Next ZeileData
If strName  "" Then
With wksAuszug
ZeileAuszug = ZeileAuszug + 1
.Cells(ZeileAuszug, 1) = strName
.Cells(ZeileAuszug, 2) = Element
.Cells(ZeileAuszug, 3) = Jahr
.Cells(ZeileAuszug, 4) = Prioritaet
End With
End If
End With
End Sub

Anzeige
AW: Knifflige Aufgabe für VBA
18.09.2009 14:09:43
Gregor
Hallo Franz
Toll, da war aber ein wirklicher Excel-Crack am Werk, da kann ich nur staunen!
Ich habe diesen Code in meine Datei eingebaut, klappt bestens.
Vielen herzlichen Dank
Gregor

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige