2013-05-05 70 views
0

好吧,我試圖做一個「爲每個」循環通過多個範圍循環。爲了更好地解釋它,我希望excel可以遍歷一列合同名稱,並且在本月簽署的每份合同(在合同欄右邊的列中以「S」表示),我想檢查它是否是也表示爲前一個月簽署。通過多個範圍循環

前一個月是一個不同的工作簿,但我認爲我可以讓該表格成爲我公式中指定的命名範圍。在這一點上,我們遇到了我的問題。在我的每一個循環中,「對於範圍(X)中的每個單元格」但是指的是第一個工作簿(本月而不是上個月),所以我不知道如何在我的「if語句」中引用第二個工作簿(如果wbkA範圍(「A」).offset(0,1).value =「S」和wbkB範圍(「A」).offset(0,1)=「S」)

有一個第三部分是我想要做的,但我很確定,如果我能弄明白,如果有人可以幫助我這部分。

請讓我知道,如果我的問題是模棱兩可的,我會盡力詳細說明。預先感謝任何幫助!

+2

如果你表現出你此刻的代碼,這將使我們更幫助你。 – glh 2013-05-05 22:21:22

+1

在這一點上,我認爲我們也可以提出一個問題,爲什麼每個月都要將數據保存在單獨的工作簿中,而不是將其推送到數據庫中。 – ApplePie 2013-05-05 23:08:27

+2

我認爲'lookup'是最適合這個的。一個循環似乎矯枉過正。 – glh 2013-05-06 07:34:08

回答

0

如果關閉,您可以從Application.Workbooks(index or name)Application.Workbooks.Open(...)訪問不同的工作簿。

所以:

Dim wbkA as Workbook 
Dim wbkB as Workbook 

'If both are open being A the first and B the second: 
Set wbkA = Application.Workbooks(1) 
Set wbkB = Application.Workbooks(2) 

您還可以檢查他們的名字是肯定的。

0

使用項目()兩個工作簿中的一個:

Set objBook1 = Workbooks("April.xls") 
Set objSheet1 = objBook1.Sheets("Sheet1") 
Set rangeInBook1 = objSheet1.Range("A1:A5") 

Set objBook2 = Workbooks("May.xls") 
Set objSheet2 = objBook2.Sheets("Sheet1") 
Set rangeInBook2 = objSheet2.Range("A1:A5") 

book2Index = 1 
For Each objRng In rangeInBook1 
    itemFromBook1 = objRng.Value 
    itemFromBook2 = rangeInBook2.Item(book2Index) 
    book2Index = book2Index + 1 
Next 
+0

@Alex P是每個合同名稱是唯一的名稱。任何想法,因爲我仍然有同樣的問題?它也必須是VBA,因爲它是一個更大的宏的一部分 – 2013-05-15 19:46:27