2017-06-08 3 views
0

Hier ist, was ich versuche zu tun: Spalte "a" enthält, sagen wir, Art des Autos und Spalte "b" enthält die Farbe dieses Autos. Was ich tun muss, ist eine Tabelle zu formatieren, die die Menge von zum Beispiel "Blue Civics" zeigt, so dass ich das mit "Blue Jeeps" und "Red Landrovers" vergleichen kann. Kennt jemand einen einfachen Weg, dies zu tun, ohne eine Reihe von Variablen zu initialisieren und eine Menge if-Anweisungen zu erstellen?Quantifizieren Sie den Vergleich zwischen zwei Spalten VBA

Grundsätzlich werde ich 4 Arten von Autos haben und jedes dieser Autos hat 4 mögliche Farben. Im Moment habe ich etwas in der Art:

Dim HondaRed As Integer, HondaBlue As Integer 
For Each a In ary 
    On Error Resume Next 
    cl.Add a, CStr(a) 
    'if statements that ask if column "a" is is honda if column "b" is blue, then incramanets HondaBlue by 1' 
Next a 

Ich könnte dies in C++ kein Problem. Das Problem ist, dass ich immer noch VB betreibe, so dass jegliche Hilfe oder Ressourcen, die mich in die richtige Richtung lenken würden, sehr geschätzt würden. Vielen Dank!

+0

Warum möchten Sie blaue Staatsbürgerschaften mit "Blue Jeeps" und "Red Landrovers" vergleichen. ? –

+0

Sie können eine Pivot-Tabelle erstellen oder mithilfe von VBA die Pivot-Tabelle erstellen. –

+0

@GowthamShiva Ich nicht, ich gab nur ein Beispiel. Ich möchte kombinieren, was in Spalte a ist mit dem, was in Spalte b ist, und dann erhöhen, wie viele dieser kombinierten Werte existieren. – corvonik

Antwort

1

Wenn Sie ein VBA-Beispiel wollen, sagen wir beginnen mit:

enter image description here

Hier einige sehr einfachen Code ist:

Sub TableMaker() 
    Dim N As Long, i As Long, j As Long, k As Long 
    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 1 To N 
     ca = Cells(i, 1) 
     cl = Cells(i, 2) 
     If ca = "Honda" Then j = 2 
     If ca = "Toyota" Then j = 3 
     If ca = "Chevy" Then j = 4 
     If ca = "Ford" Then j = 5 
     If cl = "Blue" Then k = 5 
     If cl = "Black" Then k = 6 
     If cl = "Red" Then k = 7 
     If cl = "White" Then k = 8 
     'MsgBox j & vbCrLf & k & vbCrLf & Cells(j, k) 
     Cells(j, k) = Cells(j, k) + 1 
    Next i 
End Sub 

produzieren:

enter image description here

Die Header in der Häufigkeitstabelle wurden manuell hinzugefügt. Die Werte i, j in der IFs basieren auf dem Standort der Tabelle.

Die Verwendung einer Pivot-Tabelle ist immer noch der beste Ansatz.

+0

Das ist eine viel bessere Methode als ich geplant habe, Danke – corvonik

Verwandte Themen