2017-06-08 86 views
0

下面是我想要做的: 列“a”包含,比方说,汽车的类型和列“b”包含该汽车的颜色。我需要做的是格式化一张表格,例如,显示“蓝色公民”的数量,以便我可以将其与“蓝色吉普车”和“红色行者”进行比较。有没有人知道一个简单的方法来做到这一点,而不需要初始化一堆变量并制作一堆if语句?量化两列之间的比较VBA

基本上,我将有4种类型的汽车,每辆汽车有4种可能的颜色。现在,我有这样的事情:

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 

我可以做到这一点在c + +没有问题。问题是,我仍然在等VB,所以任何帮助或资源指向我在正确的方向将不胜感激。谢谢!

+0

你为什么要把蓝色公民比作“蓝色吉普车”和“红色越野车”。 ? –

+0

考虑创建一个数据透视表或使用VBA创建数据透视表。 –

+0

@GowthamShiva我没有,我只是举了一个例子。我想将列a中的内容与列b中的内容相结合,然后增加这些组合值中的多少个。 – corvonik

回答

1

如果你想有一个VBA例子,比如说我们先从:

enter image description here

下面是一些非常简单的代码:

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 

会产生:

enter image description here

频率表中的标题手动添加。 IFs中的值基于表格的位置。

使用数据透视表仍然是最好的方法。

+0

这是一个比我计划好得多的方法,谢谢 – corvonik