Объединение форматирования при динамической ссылке на внешние листы - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь написать код для автоматизации поиска, который мы проводим в моей компании по 64 таблицам, по 6 вложенных листов в каждой. Из-за типичных проблем «левой руки» и «большой руки» большой компании, а также из-за строгой политики объединение электронных таблиц невозможно. Таким образом, я смотрю на одну электронную таблицу, в которой выполняется поиск заданного названия компании во всех электронных таблицах, однако, создавая прямую ссылку на каждую отдельную электронную таблицу и работы с вложенными листами, я пытаюсь динамически генерировать вложенные листы.

Код ссылки на электронную таблицу напрямую: Использование SumProduct:

=SUMPRODUCT(--('\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A=J5))

Использование VLookup:

=(IFERROR(IF(VLOOKUP(J5,'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A,1,FALSE)=J5,"Yes","No"),"No"))

В этом случае «J5» относится к ячейке, используемой для поиска (в данном случае «Меггинсон», и поиск выполняется нормально.

Прямые ссылки - код работает

Однако, когда я пытался генерировать ссылки динамически, я пытался объединить адрес, чтобы я мог генерировать ссылки на вложенные листы динамически. Вот код, который я использую для SumProduct, пытаясь сгенерировать его:

=SUMPRODUCT(--("'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]" & Lists!A2:A7 & "!$A:$A=" & $J$5  ))

(примечание: для дальнейших снимков экрана «Списки! A2: A7» будут «Списки!: A2» для улучшения читаемости)

Однако этот код генерирует ошибку #value. Теперь, согласно блоку оценки формулы, код генерирует ссылки на листы в виде массива, так что это работает нормально. Это то, что окно оценки показывает перед тем, как генерирует ошибку #value:

продукт не работает - 1

Теперь я заметил, что часть "megginson" в конце, похоже, теряет свои кавычки, что, как я думал, могло быть причиной, поэтому я исправил конец кода SumProduct следующим образом:

"!$A:$A=" & CHAR(34) & $J$5 & CHAR(34)

Но это то, что показывает оценка перед генерацией ошибки

продукт не работает - 2

Где сейчас кажется, что в конце слишком много кавычек. Я пробовал разные комбинации добавления кавычек вокруг ссылки J5, но ни одна из них не решила проблему.

Я также попытался вместо этого использовать VLookup, используя этот код для динамической генерации ссылок:

=VLOOKUP(J5,"\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]" & "Irregularities!" & "$A:$A",1,FALSE)

, которая также генерирует ту же ошибку #value.

Это оценка формулы для VLookup до его сбоя

не работает - VLookup

Это действительно смущает меня, так как я не вижу функциональной разницы между выводом между кодом, который напрямую ссылается на электронную таблицу неровностей, и тем, который пытается динамически сгенерировать ссылку, кроме наличия цитаты знаки (которые, как я полагаю, исчезают при вычислении формулы?).

Прямая ссылка (формула оценивается с шагом до возврата результата):

=VLOOKUP("Megginson ",'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A,1,FALSE)

Динамическая ссылка (формула оценивается с шагом до сбоя):

=VLOOKUP("Megginson ", "'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A",1,FALSE)

Теперь я понимаю, что проблема в том, чтобы попытаться сгенерировать ссылку на внешний лист с помощью конкатенации, однако я абсолютно не представляю, как изменить код, чтобы ссылки генерировались правильно (предполагая, что это не так). Если кто-то может помочь мне, рассказав, что происходит не так, я был бы невероятно благодарен.

Ура!

1 Ответ

0 голосов
/ 28 января 2019

Я полагаю, что функция Excel INDIRECT() служит для таких целей - она ​​возвращает ссылку, которую вы можете составить путем объединения (&) имен файлов / путей и имен вкладок.

...