对于VBA中的每个循环用法并检索数据

时间:2013-06-24 11:26:30

标签: vba loops

我在sheet1中有以下数据。

TransId CustID  Account Stake

1       1       NP1     10
2       1       NP1     11
3       1       NP1     12
4       1       NP1     13
5       1       NP1     14
6       2       NP2     15
7       2       NP2     16
8       2       NP2     17
9       2       NP2     18
10      2       NP2     19
11      3       NP3     20
12      3       NP3     21
13      3       NP3     22
14      3       NP3     23
15      3       NP3     24

以及sheet2中的以下详细信息。

Account Agent   master  SuperMaster

NP1     1       5       4
NP2     9       5       6
NP3     4       3       7
NP4     8       3       2
NP5     2       7       8
NP6     8       10      2

我需要在sheet3中计算,对于表中的每个customerId,我需要考虑所有的TransId和相关的赌注&帐户。然后我应该比较sheet2中的帐户并检索agent,master和Supermaster的值。因此我在sheet3中的最终计算是, 对于每个CustId,transId1(桩*代理*主*超级管理员)+ transId2(与1相同)并持续到TransId5,因为在CutomerId1中有5个事务。

请指导我如何在VBA中执行此操作? (我是编程和VBA的新手)

1 个答案:

答案 0 :(得分:0)

在我看来,最简单的方法是使用vlookup和数据透视表。我尝试了一些纯粹用vba设置的东西,我知道这是可能的,但对我来说这更容易。这将在sheet1上生成一个表,您可以运行数据透视表以产生所需的结果。

    Sub Main()
    Dim rowCount1, rowCount2 As Integer

    rowCount1 = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    rowCount2 = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row


    Sheets("Sheet1").Range("E1").Value = "Agent"
    Sheets("Sheet1").Range("F1").Value = "Master"
    Sheets("Sheet1").Range("G1").Value = "SuperMaster"
    Sheets("Sheet1").Range("H1").Value = "Sum"
    Dim x As Integer
    For x = 2 To rowCount1
        Sheets("Sheet1").Range("E" & x).Formula = "=vlookup(C" & x & _
        ",Sheet2!A1:D" & rowCount2 & ",2,false)"
        Sheets("Sheet1").Range("F" & x).Formula = "=vlookup(C" & x & _
        ",Sheet2!A1:D" & rowCount2 & ",3,false)"
        Sheets("Sheet1").Range("G" & x).Formula = "=vlookup(C" & x & _
        ",Sheet2!A1:D" & rowCount2 & ",4,false)"
        Sheets("Sheet1").Range("H" & x).Formula = "=product(D" & x & ":G" & x & ")"
    Next x

    End Sub

然后在表3中,使用表1中数据的数据透视表,你得到

Row Labels  Sum of Sum
1             1200
2             22950
3             9240
Grand Total   33390