我在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的新手)
答案 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