Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
528to532
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
528to532
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Liste mittels VBA auswerten

Liste mittels VBA auswerten
12.12.2004 19:54:31
Fritz
Hallo VBA-Experten,
habe im Moment mal wieder an einer Aufgabe zu knabbern, bei der ich - wegen fehlender VBA-Kenntnisse - gerne eure Hilfe in Anspruch nehmen würde:
In einer Tabelle "Daten(2)" können in den Zeilen 3 bis 362 insgesamt bis zu 360 Datensätze enthalten sein. Die Tabelle ist wie folgt aufgebaut:
Daten(2)
 ABCDEFGHIJ
2 NameVornameOrtOrt/KurzBezeichnung Kennz.BeauftragterKurznameUmsatz
31WunschThomasDresdenDDWunsch, T. (DD)1Hauer, FritzFH0,5
42GanzJürgenKielKIGanz, J. (KI)3Müller, MichaelMicMül5,0
53VittHeinKielKIVitt, H. (KI)2Gerber, VolkerVG2,5
64GroßBeateMünchenMGroß, B. (M)1Brauer, GünterGB0,7
75KleinFelixStuttgartSKlein, F. (S)4Brauer, GünterGB2,3
86DollmannCarlaKölnKDollmann, C. (K)4Gerber, VolkerVG2,2
97HaasPeterBremenHBHaas, P. (HB)2Brauer, GünterGB1,1
108UngerMaxKonstanzKNUnger, M. (KN)1Schwarz, HeinzHS0,9
119WeberSusiStuttgartSWeber, S. (S)3Müller, MichaelMicMül1,1
1210WeberFrankStuttgartSWeber, F. (S)3Müller, MichaelMicMül2,0
1311         
1412         
Formeln der Tabelle
E3 : =WENN(ISTTEXT(D3);SVERWEIS(D3;$B$401:$C$418;2;FALSCH);"")
F3 : =WENN(UND(ISTTEXT(B3);ISTTEXT(C3);ISTTEXT(E3));B3&", "&(LINKS(C3;1)&". ("&E3&")");"")
I3 : =WENN(ISTTEXT(H3);SVERWEIS(H3;$E$401:$F$408;2;FALSCH);"")
E4 : =WENN(ISTTEXT(D4);SVERWEIS(D4;$B$401:$C$418;2;FALSCH);"")
F4 : =WENN(UND(ISTTEXT(B4);ISTTEXT(C4);ISTTEXT(E4));B4&", "&(LINKS(C4;1)&". ("&E4&")");"")
I4 : =WENN(ISTTEXT(H4);SVERWEIS(H4;$E$401:$F$408;2;FALSCH);"")
E5 : =WENN(ISTTEXT(D5);SVERWEIS(D5;$B$401:$C$418;2;FALSCH);"")
F5 : =WENN(UND(ISTTEXT(B5);ISTTEXT(C5);ISTTEXT(E5));B5&", "&(LINKS(C5;1)&". ("&E5&")");"")
I5 : =WENN(ISTTEXT(H5);SVERWEIS(H5;$E$401:$F$408;2;FALSCH);"")
E6 : =WENN(ISTTEXT(D6);SVERWEIS(D6;$B$401:$C$418;2;FALSCH);"")
F6 : =WENN(UND(ISTTEXT(B6);ISTTEXT(C6);ISTTEXT(E6));B6&", "&(LINKS(C6;1)&". ("&E6&")");"")
I6 : =WENN(ISTTEXT(H6);SVERWEIS(H6;$E$401:$F$408;2;FALSCH);"")
E7 : =WENN(ISTTEXT(D7);SVERWEIS(D7;$B$401:$C$418;2;FALSCH);"")
F7 : =WENN(UND(ISTTEXT(B7);ISTTEXT(C7);ISTTEXT(E7));B7&", "&(LINKS(C7;1)&". ("&E7&")");"")
I7 : =WENN(ISTTEXT(H7);SVERWEIS(H7;$E$401:$F$408;2;FALSCH);"")
E8 : =WENN(ISTTEXT(D8);SVERWEIS(D8;$B$401:$C$418;2;FALSCH);"")
F8 : =WENN(UND(ISTTEXT(B8);ISTTEXT(C8);ISTTEXT(E8));B8&", "&(LINKS(C8;1)&". ("&E8&")");"")
I8 : =WENN(ISTTEXT(H8);SVERWEIS(H8;$E$401:$F$408;2;FALSCH);"")
E9 : =WENN(ISTTEXT(D9);SVERWEIS(D9;$B$401:$C$418;2;FALSCH);"")
F9 : =WENN(UND(ISTTEXT(B9);ISTTEXT(C9);ISTTEXT(E9));B9&", "&(LINKS(C9;1)&". ("&E9&")");"")
I9 : =WENN(ISTTEXT(H9);SVERWEIS(H9;$E$401:$F$408;2;FALSCH);"")
E10 : =WENN(ISTTEXT(D10);SVERWEIS(D10;$B$401:$C$418;2;FALSCH);"")
F10 : =WENN(UND(ISTTEXT(B10);ISTTEXT(C10);ISTTEXT(E10));B10&", "&(LINKS(C10;1)&". ("&E10&")");"")
I10 : =WENN(ISTTEXT(H10);SVERWEIS(H10;$E$401:$F$408;2;FALSCH);"")
E11 : =WENN(ISTTEXT(D11);SVERWEIS(D11;$B$401:$C$418;2;FALSCH);"")
F11 : =WENN(UND(ISTTEXT(B11);ISTTEXT(C11);ISTTEXT(E11));B11&", "&(LINKS(C11;1)&". ("&E11&")");"")
I11 : =WENN(ISTTEXT(H11);SVERWEIS(H11;$E$401:$F$408;2;FALSCH);"")
E12 : =WENN(ISTTEXT(D12);SVERWEIS(D12;$B$401:$C$418;2;FALSCH);"")
F12 : =WENN(UND(ISTTEXT(B12);ISTTEXT(C12);ISTTEXT(E12));B12&", "&(LINKS(C12;1)&". ("&E12&")");"")
I12 : =WENN(ISTTEXT(H12);SVERWEIS(H12;$E$401:$F$408;2;FALSCH);"")
E13 : =WENN(ISTTEXT(D13);SVERWEIS(D13;$B$401:$C$418;2;FALSCH);"")
F13 : =WENN(UND(ISTTEXT(B13);ISTTEXT(C13);ISTTEXT(E13));B13&", "&(LINKS(C13;1)&". ("&E13&")");"")
I13 : =WENN(ISTTEXT(H13);SVERWEIS(H13;$E$401:$F$408;2;FALSCH);"")
E14 : =WENN(ISTTEXT(D14);SVERWEIS(D14;$B$401:$C$418;2;FALSCH);"")
F14 : =WENN(UND(ISTTEXT(B14);ISTTEXT(C14);ISTTEXT(E14));B14&", "&(LINKS(C14;1)&". ("&E14&")");"")
I14 : =WENN(ISTTEXT(H14);SVERWEIS(H14;$E$401:$F$408;2;FALSCH);"")
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
In der Arbeitsmappe existiert für jeden Beauftragten ein Tabellenblatt mit dem Blattnamen, der den Beauftragten jeweils in der Spalte I zugewiesen wurde.
Ich möchte nun mittels VBA erreichen, dass die Datensätze der Tabelle "Daten(2)" entsprechend der Kurznamen auf die entsprechenden Tabellen aufgeteilt wird(Tabellen mit den jeweiligen Kurznamen).
Also: Die Datensätze, in denen in der Spalte I FH steht, sollen in das Tabellenblatt "FH", die Datensätze in denen in der Spalte I VG steht, in das Tabellenblatt "VG" eingefügt werden, usw. Es sollten jedoch nicht die kompletten Datensätze übernommen werden, sondern nur die Datenfelder der Spalten F, G und J, wobei die Datensätze nach dem Kriterium in Spalte G (Kennz.) aufsteigend sortiert werden sollten.
Die Eintragung in den Tabellen mit den Kurznamen sollte ab Zeile 5 jeweils in die Spalten A, B und C erfolgen.
Ich hoffe, dass die Aufgabenstellung nachvollziehbar beschrieben wurde und freue mich über jede Form von Hilfe. Bereits hier besten Dank allen Helfern.
Mfg
Fritz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste mittels VBA auswerten
12.12.2004 20:28:06
Josef
Hallo Fritz!
Lass mal laufen!

Sub test()
Dim rng As Range
Dim wks As Worksheet
Dim lastRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
Set wks = Sheets("Daten(2)")
lastRow = wks.Range("I65536").End(xlUp).Row
For Each rng In wks.Range("I2:I" & lastRow)
With Sheets(rng.Text)
.Cells(.Cells(65536, 1).End(xlUp).Row + 1, 3) = wks.Cells(rng.Row, 10)
.Cells(.Cells(65536, 1).End(xlUp).Row + 1, 2) = wks.Cells(rng.Row, 7)
.Cells(.Cells(65536, 1).End(xlUp).Row + 1, 1) = wks.Cells(rng.Row, 6)
End With
Next
For Each rng In wks.Range("I2:I" & lastRow)
With Sheets(rng.Text)
.Range("A:C").Sort Key1:=.Range("B2"), Order1:=xlAscending, Key2:=.Range("C2") _
, Order2:=xlAscending, Key3:=.Range("A2"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige
AW: Liste mittels VBA auswerten
Fritz
Hallo Sepp,
vielen Dank, läuft soweit hervorragend.
Ungewollt ist lediglich, dass die Daten in die (Ziel-)Tabellen ab Zeile 1 eingetragen werden, da in den Zieltabellen jedoch in den ersten 4 Zeilen Werte stehen, sollte die Eintragung in die Spalten A, B, C jeweils erst ab Zeile 5 erfolgen. Könnst Du mir das noch ändern! Besten Dank, hast mir wieder einmal sehr geholfen.
Gruß
Fritz
AW: Liste mittels VBA auswerten
12.12.2004 20:51:50
Josef
Hallo Fritz!
Dann mach' mers halt so;-)

Sub test()
Dim rng As Range
Dim wks As Worksheet
Dim lastRow As Long
Dim lRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
Set wks = Sheets("Daten(2)")
lastRow = wks.Range("I65536").End(xlUp).Row
For Each rng In wks.Range("I2:I" & lastRow)
With Sheets(rng.Text)
lRow = .Cells(65536, 1).End(xlUp).Row + 1
If lRow < 5 Then lRow = 5
.Cells(lRow, 3) = wks.Cells(rng.Row, 10)
.Cells(lRow, 2) = wks.Cells(rng.Row, 7)
.Cells(lRow, 1) = wks.Cells(rng.Row, 6)
End With
Next
For Each rng In wks.Range("I2:I" & lastRow)
With Sheets(rng.Text)
.Range("A5:C65536").Sort Key1:=.Range("B5"), Order1:=xlAscending, Key2:=.Range("C5") _
, Order2:=xlAscending, Key3:=.Range("A5"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige
Super! Danke Sepp! o.T.
Fritz
schneller
13.12.2004 00:27:05
Josef
Hallo Fritz!
Eine kleine Verbesserung zur Performance steigerung.

Sub test()
Dim rng As Range
Dim wks As Worksheet
Dim lastRow As Long
Dim lRow As Long
Dim arr1() As Variant
Dim arr2() As Variant
Dim x As Long, n As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
Set wks = Sheets("Daten(2)")
lastRow = wks.Range("I65536").End(xlUp).Row
For Each rng In wks.Range("I2:I" & lastRow)
With Sheets(rng.Text)
ReDim Preserve arr1(n)
arr1(n) = rng.Text
n = n + 1
lRow = .Cells(65536, 1).End(xlUp).Row + 1
If lRow < 5 Then lRow = 5
.Cells(lRow, 3) = wks.Cells(rng.Row, 10)
.Cells(lRow, 2) = wks.Cells(rng.Row, 7)
.Cells(lRow, 1) = wks.Cells(rng.Row, 6)
End With
Next
QuickSort arr1
For n = 0 To UBound(arr1)
If arr1(n) <> arr1(n + 1) Then
ReDim Preserve arr2(x)
arr2(x) = arr1(n)
x = x + 1
End If
Next
For n = 0 To UBound(arr2)
With Sheets(arr2(n))
.Range("A5:C65536").Sort Key1:=.Range("B5"), Order1:=xlAscending, Key2:=.Range("C5") _
, Order2:=xlAscending, Key3:=.Range("A5"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Sub QuickSort(data() As Variant, Optional UG, Optional OG)
Dim P1&, P2&, T1 As Variant, T2 As Variant
UG = IIf(IsMissing(UG), LBound(data), UG)
OG = IIf(IsMissing(OG), UBound(data), OG)
P1 = UG
P2 = OG
T1 = data((P1 + P2) / 2)
Do
Do While (data(P1) < T1)
P1 = P1 + 1
Loop
Do While (data(P2) > T1)
P2 = P2 - 1
Loop
If P1 <= P2 Then
T2 = data(P1)
data(P1) = data(P2)
data(P2) = T2
P1 = P1 + 1
P2 = P2 - 1
End If
Loop Until (P1 > P2)
If UG < P2 Then QuickSort data, UG, P2
If P1 < OG Then QuickSort data, P1, OG
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige