2013-07-22 16 views
0

第二個問題 大家好, 這裏是我的第二個查詢;在循環遍歷電子表格中的行的同時指定特定值

我試圖寫一個VBA代碼,通過循環,這可以做在紙張http://speedy.sh/pvVEX/stack1.xlsx

1)檢查表下面是多少蘋果確實Aasif擁有並Sheet1,其中行插Aasif和列是Apples,然後檢查oranges多少呢Aasif具有和插在排Aasif和列是Oranges

2)檢查所有的水果後,就應該到旁邊的人,Aeleta然後再同爲每列

我是vba循環的新手,儘管我已經提出了一些其他的疑問,所以幫助將不勝感激。

+1

爲什麼不在問題中包含數據結構或表作爲代碼或圖形? – Raystafarian

回答

1

這並不難;) 請參閱a good starting point

我給你,與你在鏈接中提供的電子表格中運行的代碼。它會根據在列表填充"Sheet1""Sheet2"
注:確保你的牀單被稱爲工作表Sheet1和Sheet2中或修改代碼相應

Sub Main() 

Dim ws1 As Worksheet, ws2 As Worksheet ' sheet variables declaration 
Set ws1 = Sheets("Sheet1"): Set ws2 = Sheets("Sheet2") ' binding sheets to variables 

Dim rng1 As Range, rng2 As Range ' range variables 
Dim i As Long, j As Long, k As Long ' iterators 

' for each cell in column F in sheet2 
For i = 2 To ws2.Range("F" & Rows.Count).End(xlUp).Row 
    Set rng2 = ws2.Range("F" & i) ' binding cells from column F (sheet2) to rng2 variable 
    ' for each cell in column B on sheet1 
    For j = 2 To ws1.Range("B" & Rows.Count).End(xlUp).Row 
     Set rng1 = ws1.Range("B" & j) ' binding cells from column B (sheet1) to rng1 variable 
     ' comparing both words (names) 
     If StrComp(rng2, rng1, 1) = 0 Then 
      For Each Column In Sheet1 
      For k = 3 To ws1.Cells(1, Columns.Count).End(xlToLeft).Column 
       ' if the name of column matches the offset or rng2 (name) 
       If StrComp(rng2.Offset(0, 1), Cells(1, k), 1) = 0 Then 
        ' copy/paste the amount of fruits from sheet2 to corresponding cells in sheet1 
        Cells(rng1.Row, k) = rng2.Offset(0, 2) 
       End If 
      Next k ' next column 
     End If 
     Set rng1 = Nothing 
    Next j ' next row in sheet1 
    Set rng2 = Nothing 
Next i ' next row in sheet2 

末次

結果 Results

+0

你好,謝謝你的幫助,請你解釋一下,如果你不介意哪個代碼在這裏做什麼? – MyNameIsSlimChady

+0

@MyNameIsSlimChady是的,我在代碼中添加了註釋,請參閱更新回答 – 2013-07-22 13:18:35

+0

此代碼正在工作,但是如果我在Sheet1或Sheet2上擴展表,它不會響應。在sheet2上能夠繼續到空模式嗎? 我實際上是通過SQL提取數據,並將其放入更多圖形格式,因此條目數量會有所不同。 – MyNameIsSlimChady