2013-06-24 59 views
0

我在sheet1中有以下數據。對於VBA中的每個循環使用和檢索數據

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 

我需要在工作表Sheet 3,對於每個客戶ID表,我需要考慮所有的TRANSID及相關股份&賬戶計算。然後,我應該比較sheet2中的帳戶並檢索代理,主人和超級主管的值。因此,對於每個CustId,transId1(stake * agent * master * supermaster)+ transId2(與1相同),sheet3中的最終計算將爲 ,並且繼續到TransId5,因爲CutomerId1中有5個事務。

請指導我如何在VBA中做到這一點? (我是編程新手& VBA)

回答

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