Sortieren mit VBA
#1
Guten Nachmittag
Habe eine Tanelle in welcher in der Spalte B der Name und in Spalte D die Kategorie angeführt ist. Ab spalte E bis Spalte T stehen Berechnungen (z.B. =SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B8;Zusammenfassung!$L$6:$L$306)
=SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B9;Zusammenfassung!$L$6:$L$306)
=SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B10;Zusammenfassung!$L$6:$L$306)
....
=SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B306;Zusammenfassung!$L$6:$L$306)

Mit dem untenangeführten Kode Sortiere ich die Daten ab Zeile 9
 
1. nach Spalte D (Kategorie) und
2. nach Spalte B (Name)

Leider werden die Formeln ab Spalte E nicht mitsortieret und die Formeln haben nach der Sortierung falsche Bezüge 

.... Zeile 8 steht  =SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B10;Zusammenfassung!$L$6:$L$306) 
.... Zeile 9 steht  =SUMMEWENN(Zusammenfassung!$B$6:$B$306;Liste!B23;Zusammenfassung!$L$6:$L$306)

usw.
Hat jemand eine Idee wie ich diesen Fehler beheben könnte?


Danke

Sub SortierungNeu()
Dim selectedRange As Range
Application.ScreenUpdating = False

ActiveWorkbook.Sheets("Liste").Activate

Set selectedRange = Application.InputBox("Den Bereich für die Sortierung markieren.", "Sortierung", Type:=8)

    If Not selectedRange Is Nothing Then
        selectedRange.Select
    End If

' Im Beispiel wurde der A1 bis T12 als Bereich über Application.InputBox festelegt
  'Range(be_sortierung).Select
    ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add2 Key:=Range("D8:D12") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal            'Sortierung nach Kategorie
    ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add2 Key:=Range("B8:B12") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal             'Sortierung nach aName
    With ActiveWorkbook.Worksheets("Liste").Sort
        .SetRange selectedRange
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A8").Select
   
    Call NumerierungNeu
    Application.ScreenUpdating = True
End Sub
Antworten Top
#2
Wo sind die Code Tags ?
Wo ist NumerierungNeu ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hallo

mir fällt auf, das im Code nicht geprüft wird ob die Range Eingabe für A1 bis T12 in Ordnung ist!!
Was ist mit Aussprung bei İs Nothing?. Ich würde den Code so aendern.

Set selectedRange = Application.InputBox("Den Bereich für die Sortierung markieren.", "Sortierung", Type:=8)
If selectedRange Is Nothing Then Exit Sub
Adr = selectedRange.Address(0, 0)
If InStr(Left(Adr, 1), "A") = 0 Or InStr(Adr, ":T") = 0 Then _
MsgBox Adr & " Falscher Sortierbereich": Exit Sub

mfg Gast 123
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste