Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

VBA Makro für Sortierfunktion

VBA Makro für Sortierfunktion
23.06.2014 23:46:02
Isi
Hallo ihr lieben alle,
ich benötige Hilfe in Bezug auf ein Makro für eine Sortierfunktion die folgendermaßen aufgebaut werden soll:
Fakten:
Es besteht eine Excel Liste bei welcher in Spalte A bestimmte Nummern (NrA) stehen (können auch mehrmals vorkommen), in Spalte B stehen Nummern (NrB) welche den NrA zugeordnet sind und in Spalte C sind die Beschreibungen zu den NrB. NrB haben eine bestimmte Hirarchie (z.B. kommt als oberstes 98989 (Tabellenblatt 2), dann 88998 (Tabellenblatt 3) und dann 7897 (Tabellenblatt 4)). Für jede NrB wird ein neues Tabellenblatt angelegt in denen Spalte A die Zahl der Einträge anzeigt.
Beispiel:
A----B-----C
1234-98989-blablaba
1234-7897--...
1111-98989-...
1212-88998-...
...
(ANMERKUNG: "-" sind leerzeichen, sonst wird das hier falsch dargestellt)
Weg zur Lösung:
Mein Ziel ist eine if-Schleife, welche meine NrA in ein neues Tabellenblatt der hierarchisch höchsten NrB überschreibt bzw. zuordnet.
Bei NrA= 1234 ist NrB=98989 die hierarchisch höchste Nummer, danach kommt erst 7897. Somit sollen alle NrA= 1234 in das Tabellenblatt 98989 geschrieben werden, auch NrA= 1234 mit NrB=7897.
In dem Tabellenblatt "98989" (Tabellenblatt 2) steht also dann in:
SpalteA--SpalteB--SpalteC---Spalte D
1--------1234-----98989-----blablabla
---------1234-----7897------blablabla
2--------1111-----98989-----blablabla
...
Und die If-Schleife sollte ja dann so ca. aussehen, dass sie heißt
Wenn die Nummer aus Spalte A (Tabellenblatt 1) die Nummer 98989 in Spalte B enthält, dann übertrage die dazugehörige Nummer aus Spalte A (Tabelle1) und alle gleichen Nummern aus Spalte A mit ihrer kompletter Zeile in Tabellenblatt 2. (Dann sind die in Tabellenblatt 1 nicht mehr enthalten und können keinem hierarchisch niedrigerem Tabellenblatt zugeordnet werden).
Ich hoffe das war einigermaßen verständlich. Ansonsten bitte ich um Kritik und in erster Linie um ganz viel Hilfe!!!
Das wäre so super, wenn mir jemand einen Anstoß geben könnte!!! Ich habe nämlich zu wenig Erfahrung mit VBA Makros und würde gerne verstehen wie ich hierfür ein Makro schreiben kann.
Vielen lieben Dank schon mal, ich zähle auf eure Expertenmeinungen :)
Liebe Grüße
Isi

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro für Sortierfunktion
24.06.2014 01:47:33
Jack_D
Hallo Isi
Ich hab mal ein Makro geschrieben was deine Funktionalität abbildet, so wie ich sie zumindest verstehe.
Aber auch bei deiner Erklärung ist reichlich interpretationsspielraum
Im Zweifel einfach mal eine Mustermappe hochladen.
Grüße
Sub blabla()
Dim Zeile As Long, LZeile As Long
With Worksheets("Tabelle1")
LZeile = .Cells(Rows.Count, 1).End(xlUp).Row
For Zeile = 1 To LZeile
Select Case Checksheet(.Cells(Zeile, 2))
Case Is = False
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(Zeile, 2)
Call Eintragen(.Cells(Zeile, 2), .Cells(Zeile, 1), .Cells(Zeile, 3))
Case Is = True
Call Eintragen(.Cells(Zeile, 2), .Cells(Zeile, 1), .Cells(Zeile, 3))
End Select
Next Zeile
End With
End Sub
Public Function Checksheet(ByVal WorksheetName As String) As Boolean
On Error Resume Next
Checksheet = (Sheets(WorksheetName).Name  "")
On Error GoTo 0
End Function
Public Function Eintragen(WorksheetName As String, Wert1 As String, Wert2 As String)
Dim LSZeile As Long
With Worksheets(WorksheetName)
LSZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(LSZeile, 1) = LSZeile 'Laufende Nummer
.Cells(LSZeile, 2) = Wert1 'NRA
.Cells(LSZeile, 3) = WorksheetName 'Blattname
.Cells(LSZeile, 4) = Wert2 'NRB
End With
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige