0

我在 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 中的 account 并检索 agent、master 和 Supermaster 的值。因此,我在 sheet3 中的最终计算将是,对于每个 CustId,transId1(stake*agent*master*supermaster) + transId2(same as 1) 并一直持续到 TransId5,因为 CutomerId1 中有 5 笔交易。

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

4

1 回答 1

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
于 2013-06-24T14:51:35.037 回答