Microsoft Excel

Herbers Excel/VBA-Archiv

Werte kategorisieren



Excel-Version: 9.0 (Office 2000)

Betrifft: Werte kategorisieren
von: Sebastian
Geschrieben am: 27.08.2002 - 11:51:08

An alle Datenkünstler,

Kategoriesierung:

wäre ein umgekehrtes Verfahren auch realisierbar?
(Bezug zu https://www.herber.de/forum/archiv/152to156/t152614.htm )
Hat jemand dazu eine Lösung?


Beispiel:

Ursprungstabelle:
| A | B
Artikel-Nr | Kategorie
322344 | socken
323454 | socken
326734 | socken
454234 | socken
868686 | schuhe
438686 | schuhe
863543 | schuhe


Zieltabelle:

| A |

socken
322344
323454
326734
454234
schuhe
868686
438686
863543


thx4all

  

Re: Werte kategorisieren
von: Heinz A. Wankmüller
Geschrieben am: 27.08.2002 - 12:40:42

Hallo Sebastian,

eine Möglichkeit:


Sub Kategorisieren()
    Dim rng As Range, wsq As Worksheet, wsz As Worksheet, z As Range
    Set wsq = ThisWorkbook.Worksheets("Quelle")
    Set wsz = ThisWorkbook.Worksheets("Ziel")
    Set rng = wsq.Range("A2").CurrentRegion
    
    wsq.Range("C2").Value = 1
    wsq.Range("C2").AutoFill Destination:=Range("C2:C12"), Type:=xlFillSeries
    wsq.Range("A2").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    
    For Each z In wsq.Range("B2:B" & rng.Rows.Count - 1)
        If z.Value <> z.Offset(-1, 0).Value Then _
            wsz.Cells(wsz.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = z.Value
        wsz.Cells(wsz.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = z.Offset(0, -1).Value
    Next z
            
    wsq.Range("C2").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    wsq.Columns(3).ClearContents
End Sub

Zuerst wird nach der Kategorie sortiert, falls die nicht schön beisammen stehen, dann die gewünschte Liste erstellt und zum Schluss wieder der Ursprungszustand hergestellt.

Gruß
Heinz



  

Re: Werte kategorisieren
von: L.Vira
Geschrieben am: 27.08.2002 - 12:40:54

Formellösung oder VBA?

  

Re: Werte kategorisieren
von: Sebastian
Geschrieben am: 27.08.2002 - 18:19:21

Hallo,
es funzt sehr gut. Nur ein paar kleine Anpassungen bekomme ich nicht hin.

Wie ist es möglich das die Daten nicht in eine neue Tabelle geworfen werden, sondern sich nur die Spalte A im aktuellen Tabellenblatt ändert. (Ohne das andere Spalten beeinflußt werden).

thx4all


  

Re: Werte kategorisieren
von: Heinz A. Wankmüller
Geschrieben am: 27.08.2002 - 20:44:02

Hallo Sebastian,

hier eine Variante, die die Spalten A und B durch die neue Aufstellung ersetzt:


Sub Kategorisieren()
    Dim rng As Range, wsq As Worksheet, wsz As Worksheet, z As Range
    Set wsq = ThisWorkbook.Worksheets("Quelle")
    Set rng = wsq.Range("A2").CurrentRegion
    
    wsq.Range("A2").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    
    For Each z In wsq.Range("B2:B" & rng.Rows.Count - 1)
        If z.Value <> z.Offset(-1, 0).Value Then _
            wsq.Cells(wsq.Cells(Rows.Count, 100).End(xlUp).Row + 1, 100).Value = z.Value
        wsq.Cells(wsq.Cells(Rows.Count, 100).End(xlUp).Row + 1, 100).Value = z.Offset(0, -1).Value
    Next z
    
    With wsq.Range("CV2:CW" & wsq.Cells(Rows.Count, 100).End(xlUp).Row)
        .Copy
        wsq.Range("A2").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        .Clear
    End With
    
End Sub

Gruß
Heinz