Microsoft Excel

Herbers Excel/VBA-Archiv

Auswahlmoeglichkeit Sortieren

Betrifft: Auswahlmoeglichkeit Sortieren von: Robin Heiming
Geschrieben am: 18.08.2014 09:59:28

Guten Tag liebe Excel-Freunde,
ich habe ein wahrscheinlich kleines Problem, doch ich komm nicht selbst auf eine einfach Lösung.

Ich möchte etwas aus dem Tabellenblatt "Auswahl" auswählen und dann soll es im Tabellenblatt "Auswertung" erscheinen. Dazu kommt das ich es Lückenhaft haben möchte und in sortierter Auflistung (A-Z).

Um es klar darzustellen - Wenn ich z. B. in meiner Datei Schwimmen (Pos. 5) und Einkaufen (Pos. 8) auswähle, sollen diese in dem Tabellenblatt "Auswertung" auf der Pos. 1 & 2 erscheinen und natürlich auf Pos. 1 Einkaufen und Pos. 2 Schwimmen stehen.

Das wär es auch schon, die Datei hänge ich an und ja dann hoffe ich das mir da jemand schnell eine Lösung sagen kann oder einfach nur eine Idee in den Thread wirft. Ich weis wirklich nicht ob ich einfach zu schwer an das Problem ran gehe oder einfach keine Ahnung habe.

Bevor ich es vergesse, falls jemand noch eine bessere Lösung für das Doppelklick-Auswahl-Makro hat, dann kann er sie gerne beifügen.

Ich danke vielmals im voraus und wünsche einen schönen Tag.

MfG
RoHb

Anhang: https://www.herber.de/bbs/user/92165.xlsm

  

Betrifft: AW: Auswahlmoeglichkeit Sortieren von: Klaus M.vdT.
Geschrieben am: 18.08.2014 10:10:42

https://www.herber.de/bbs/user/92167.xlsm
Bitte sehr!

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Auswahlmoeglichkeit Sortieren von: fcs
Geschrieben am: 18.08.2014 10:30:04

Hallo Robin,

hier mein Vorschlag.

Gruß
Franz

Sub AuswahlKopieren()
  Dim wksQ As Worksheet, wksZ As Worksheet, ZeileQ As Long, ZeileZ As Long
  Set wksQ = Worksheets("Auswahl")
  Set wksZ = Worksheets("Auswertung")
  With wksZ
    ZeileZ = .Cells(.Rows.Count, 2).End(xlUp).Row
    If ZeileZ > 1 Then
      .Range(.Cells(2, 2), .Cells(ZeileZ, 3)).ClearContents
    End If
    ZeileZ = 1
  End With
  With wksQ
    For ZeileQ = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
      If UCase(.Cells(ZeileQ, 3)) = "X" Then
        ZeileZ = ZeileZ + 1
        wksZ.Cells(ZeileZ, 2).Value = .Cells(ZeileZ, 2).Value
      End If
    Next
  End With
  With wksZ
    ZeileZ = .Cells(.Rows.Count, 2).End(xlUp).Row
    If ZeileZ > 2 Then
      'Werte sortieren in Spalte B
      With .Range(.Cells(2, 2), .Cells(ZeileZ, 2))
        .Sort Key1:=.Range("A1"), order1:=xlAscending, Header:=xlNo
      End With
      'Zellfarbe neu zuordnen
      For ZeileZ = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
        With .Cells(ZeileZ, 2)
        If ZeileZ Mod 2 = 0 Then
          .Interior.ColorIndex = xlColorIndexNone
        Else
          .Interior.Color = 14277081
        End If
        End With
      Next
    End If
    .Activate
  End With
End Sub



  

Betrifft: AW: Auswahlmoeglichkeit Sortieren von: Michael
Geschrieben am: 18.08.2014 10:36:34

Hallo Robin!

Hoffe Du kannst damit was anfangen. Hab damit nur ganz "quick-and-dirty" versucht umzusetzen, was ich aus Deiner Aufgabe verstanden habe. Zur Erklärung: In Tabellenblatt 1 steht eine Begriffsliste - Begriffe werden ausgewählt durch setzen eines "x" in die Zelle rechts daneben. Dann gehe ich die Begriffsliste von oben nach unten durch, und immer wenn ein "x" gefunden wird, wird der zugehörige Begriff in Tabellenblatt zwei geschrieben (an die nächste Zeilenposition - wird mit durchgezählt). Zum Schluss sortiere ich die Begriff in Tabellenblatt 2 alphabetisch.

Deine Bsp-Datei konnte ich auf dem Server leider nicht mehr finden.

Sub TestAuswahl()

    Dim i, j As Integer
    Dim Ende As Integer
    
    Ende = Sheets(1).Cells(1, 2).End(xlDown).Row
    
    j = 1
    
    For i = 1 To Ende
        
        Select Case Sheets(1).Cells(i, 3).Value
        
            Case Is = "x"
                Sheets(2).Cells(j, 1).Value = Sheets(1).Cells(i, 2).Value
                j = j + 1
            Case Else
        
        End Select
    
    Next i
    
    Sheets(2).Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Select
    Sheets(2).Sort.SortFields.Clear
    Sheets(2).Sort.SortFields.Add Key:=Range("A1") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Sheets(2).Sort
        .SetRange Range(Cells(1, 1), Cells(1, 1).End(xlDown))
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
Liebe Grüße
Michael


  

Betrifft: AW: Auswahlmoeglichkeit Sortieren von: Robin Heiming
Geschrieben am: 18.08.2014 11:07:21

Wow, ich danke euch dreien sehr, dass ging echt schnell.
Ich habe bereits alles getestet und bin am verstehen wie das ganze von statten geht.

Klaus M.vdT., ich danke dir für diese simple und schnelle Lösung der Funktion Index, ich habe sie schon öfters gelesen, doch meistens eher überlesen. Ich werde sie mir aber nun aneignen, anscheint fehlen mir noch ein paar wertvolle Funktionen, leider hat mir bei deiner Lösung das Sortieren gefehlt und in einer Tabelle macht es mir auch gerade Probleme es zu Sortieren.

Franz, deine Lösung war auf dem ersten Blick schwer zu verstehen, selbst jetzt hab ich noch ein paar Fragezeichen im Kopf. Deine Programmierung ist aber trotzdem sehr gut und funktioniert perfekt, dazu kommt das sie sich von selbst erweitert.
P.S. Das einfärben wäre nicht nötig gewesen, trotzdem danke, kannte ich nicht. *hehe* ~ merk

Michael, auch dir vielen Dank, ich musste deinen Programmcode zwar ein bisschen anpassen, aber du hattest ja leider meine Datei nicht laden können. Dafür war auch dein Code ziemlich gut und leicht verständlich.

Ich danke euch allen sehr ihr habt mir sehr geholfen, welchen Code ich anwenden werde kann ich jetzt noch nicht sagen, ich werde sie an meiner Hauptdatei probieren und dann entscheiden welche leichter, flexibler und besser ist.

MfG
RoHb

P.S. Anscheint war mein Auswahlfunktionsmakro gut genug. *g*


 

Beiträge aus den Excel-Beispielen zum Thema "Auswahlmoeglichkeit Sortieren"