2016-05-10 5 views
0

Trennung habe ich eine Liste, die wie folgt aussieht derzeit:eine Liste in verschiedene Listen zeichnen sich durch Kategorie

enter image description here

Ich möchte etwas schreiben, das die Liste verschiedene Listen auf der Grundlage der Kategorie Spalte automatisch trennt, dass so etwas wie dies schaffen würde:

enter image description here

Vlookup funktioniert nicht, da es mehrere Werte für jede Spalte sind. Ich könnte sortieren und extrahieren, wie ich es für die Zwecke des obigen Bildes getan habe, würde es aber natürlich lieber nicht tun.

Ich versuche ein System zu "Brain Dump" all die Dinge, die ich für die Woche tun müssen, und habe es automatisch nach Kategorie organisiert. Von dort plane ich eine Spalte "Priorität" nach Kategorie hinzufügen ...

Vielen Dank!

+1

Willkommen bei Stack Overflow. SO ist kein Code für mich Service. Bitte geben Sie im Original Post, nicht die Kommentare, was Sie versucht haben. Auch, ob Sie nach einer Formel Antwort oder VBA Antwort suchen. Wenn VBA, müssen Sie versuchen, den Code, den Sie haben, versuchen. –

+0

Bitte markieren Sie eine Antwort richtig, wenn dies Ihre Absicht erfüllt. –

Antwort

0

Ich gehe davon aus, dass Sie ein VBA-Makro verwenden möchten. Das ist eigentlich ziemlich einfach. Im Wesentlichen werden wir eine Zielspalte für jede Kategorie festlegen. Es ist möglich, dies dynamisch für variable Kategorien zu tun, aber ich gehe davon aus, dass sie für Sie konstant sind. Wir gehen jedes Element in der ersten Liste durch und kopieren seinen Wert in die richtige Zielspalte, während End (xlUp) verwendet wird, um die letzte gefüllte Datenzeile zu finden und eine, um die Zielzeile zu erhalten.

Sub sortDescrip() 
Dim destCol1, destCol2 As String 

For Row = 2 To Range("A" & Rows.Count).End(xlUp).Row 
    Select Case Range("A" & Row).Value 
     Case "A" 
      destCol1 = "E" 
      destCol2 = "F" 
     Case "B" 
      destCol1 = "H" 
      destCol2 = "I" 
     Case "C" 
      destCol1 = "K" 
      destCol2 = "L" 
     Case "D" 
      destCol1 = "N" 
      destCol2 = "O" 
     Case Else 
      destCol1 = "Q" 
      destCol2 = "R" 
    End Select 
    lastRow = Range(destCol1 & Rows.Count).End(xlUp).Row + 1 
    Range(destCol1 & lastRow).Value = Range("A" & Row).Value 
    Range(destCol2 & lastRow).Value = Range("B" & Row).Value 
Next 
End Sub 

Ich nehme an, Sie wenig Erfahrung mit VBA-Programmen gehabt haben, und dies sollte man über sie begann zu denken bekommen. Excel ist allein leistungsfähig, aber Sie können den Wert einer nicht ausgewählten Zelle, die VBA tut, nicht festlegen. Während ich gerne etwas Intro-Code zur Verfügung stelle, ist @ScottCraner richtig, dass Sie auf eigene Faust gehen sollten, um etwas Basis-Erfahrung zu bekommen.

0

können Sie eine Matrixformel verwenden, die Kategorie Brief zu ändern je nach Bedarf und abschreiben:

=IF(ISERROR(INDEX($A$1:$B$15,SMALL(IF($A$1:$A$15="A",ROW($A$1:$A$15)),ROW(1:1)),2)),"",INDEX($A$1:$B$15,SMALL(IF($A$1:$A$15="A",ROW($A$1:$A$15)),ROW(1:1)),2)) 

Beachten Sie, dass Matrixformeln haben mit Ctrl + Umschalttaste + Enter bestätigt werden, anstatt nurGeben Sie ein

Verwandte Themen