2013-05-05 5 views
0

Итак, я пытаюсь выполнить цикл «для каждого», который проходит через несколько диапазонов. Чтобы лучше объяснить это, я хочу, чтобы excel перебирал столбец имен контрактов и где каждый контракт, подписанный в этом месяце (обозначенный знаком «S» в столбце справа от столбца контракта), я хочу проверить, также указано как подписанный месяцем ранее.Цитирование через несколько диапазонов

За месяц до этого другая книга, но я полагаю, что я могу просто сделать эту таблицу именованным диапазоном, ссылаясь на это в моей формуле. На данный момент мы приходим к моей проблеме. В моем для каждого цикла у меня есть «для каждой ячейки в диапазоне (X)», но это относится к первой книге (в этом месяце, а не в прошлом месяце), поэтому я не знаю, как ссылаться на вторую книгу в моем «if statement», (если диапазон wbkA («A»). offset (0, 1) .значение = до «S» и диапазон wbkB («A»). offset (0, 1) = «S»)

Существует третью часть к тому, что я хочу сделать, но я уверен, могу ли я понять, сможет ли кто-нибудь помочь мне с этой частью.

Пожалуйста, дайте мне знать, если мой вопрос неоднозначен, и я попытаюсь уточнить. Заранее благодарю за любую помощь!

+2

Если вы показать код, который вы имеете в данный момент это позволит нам, чтобы помочь вам больше. – glh

+1

На данный момент, я думаю, мы также можем поставить вопрос о том, почему вы каждый месяц сохраняете свои данные в отдельных книгах, а не вставляете их в БД. – ApplePie

+2

Я думаю, что 'lookup' лучше для этого. Цикл кажется излишним. – glh

ответ

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, потому что его часть гораздо большего макроса –

Смежные вопросы