Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA zum sortieren

Forumthread: VBA zum sortieren

VBA zum sortieren
24.09.2024 20:05:38
Heinz H
Hallo Leute

Bin nicht sehr gut in VBA, darum meine Frage.

Möchte meinen täglichen Stromverbrauch analysieren.
In meiner Tabelle habe ich in einer Spalte die Uhrzeit, und in der anderen Spalte den dazugehörigen Stromverbrauch.

ZB. in A4:A291 die Uhrzeit im 5 Minuten Takt. in B4:B291 den zugehörigen Stromverbrauch.

Nun möchte ich sortieren zu welcher Uhrzeit wird der meiste Strom verbraucht, und wieder nach Uhrzeit sortieren.

Habe zwei Makros mit Recorder aufgezeichnet, die auch funktionieren.

Nur bei 31 Tagen bräuchte ich 62 Makros.

Meine Frage und bitte an euch, wie würde das einfacher funktionieren ?

Danke
schöne Grüße
Heinz


Option Explicit


Sub Sortieren_A()

ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort.SortFields.Add2 Key:= _
Range("A4:A291"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort
.SetRange Range("A4:B291")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Sub Sortieren_B()

ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort.SortFields.Add2 Key:= _
Range("B4:B291"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Leistungsdiagramm").Sort
.SetRange Range("A4:B291")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub


https://www.herber.de/bbs/user/172377.xlsm
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA zum sortieren
24.09.2024 20:19:42
BoskoBiati2
Hallo,

wozu braucht man da Makros? Das erledigt doch die eingebaute Sortierfunktion:


Userbild

Ansonsten stellt sich mir die Frage, wieso 62 Makros bei 31Tagen?
Wie ist Deine Tabelle aufgebaut?

Gruß

Edgar
Anzeige
AW: VBA zum sortieren
25.09.2024 07:08:33
Heinz H
Guten morgen Edgar,

  • Wie ist Deine Tabelle aufgebaut?


  • Tabelle habe ich ja hochgeladen.

    Lg
    Heinz
    AW: VBA zum sortieren
    24.09.2024 20:37:59
    daniel
    Hi
    du könntest dieses Makro verwenden, welches du mit jedem deiner Buttons verknüpfen kannst:

    Sub Sortieren()
    
    Dim SortierBereich As Range
    Dim SortierSpalte As Range
    Dim Richtung As Long

    Set SortierSpalte = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(3, 0)

    If SortierSpalte.Offset(-2, 0).Value Like "Verbrauch*" Then
    Set SortierBereich = SortierSpalte.Offset(0, -1).Resize(288, 2)
    Richtung = xlDescending
    Else
    Set SortierBereich = SortierSpalte.Resize(288, 2)
    Richtung = xlAscending
    End If

    SortierBereich.Sort key1:=SortierSpalte, order1:=Richtung, Header:=xlNo, dataoption1:=xlSortTextAsNumbers

    End Sub

    das Makro ermittelt zuerst, welcher Button das Makro aufgerufen hat (Application.Caller) und dann, in welcher Zelle dieser Button sitzt.
    ausgehend von dieser Zelle wird dann der Zellbereich und die Sortierrichtung berechnet.

    der Code zum Sortieren ist die Einzeile Programmierung, wie sie bis Excel2003 verwendet wurde, als es maximal 3 Kriterien pro Sortiervorgang gab. Ich bevorzuge die aber, weil sie kürzer und einfacher ist und immer noch funktionert.

    Gruß Daniel
    Anzeige
    AW: Danke Daniel
    25.09.2024 07:19:02
    Heinz H
    Guten morgen Daniel,

    Dein Code funktioniert S U P E R ! ! !

    Recht herzlichen Dank

    Schöne Grüße
    Heinz
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige