Вложенная функция Concat в Vlookup не работает, похоже, Cant обнаружил синтаксическую ошибку - PullRequest
0 голосов
/ 05 июня 2018

data tab

Привет,

Я пытаюсь объединить определенный путь к файлу, чтобы изменить подпуть и часть имени файла.

Это функция, которую я пытаюсь поместить в ячейку D3

 =IFERROR(VLOOKUP($A3,CONCATENATE("'G:\Financial\Facility Work Papers and 
 Financials\1. Operating Entities\Arbors Major Hospital\2. 
 Financials\2018\",BB1,"\[Arbors"," ",BB2," ","2018.xls]Trial 
 Balance'")!$A$30:$H$100,8,FALSE),0)

Это фактический путь к файлу на моем компьютере: G: \ Financial \ Facility Work Papers and Financials \ 1.Операционные структуры \ Главная больница Беседки \ 2.Финансовый сектор \ 2018 \ 4.Апр \ беседки апрель 2018.xls

Предположим, у меня есть текст в BB1 и BB2, 4. Апрель и апрель соответственно.

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

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

Как только вы это сделаете, закройте внешний документ и проверьте, что сводка по-прежнему правильно выводит число, возможно, закройте и снова откройте сводку, чтобы проверить, что она по-прежнему вытягиваетэто число.

Далее мы посмотрим на формулу, которую она написала, а затем мы будем использовать отдельный лист для построения всех других формул для всех других документов, а затем вставим их врезюме.

Первым шагом является получение одной работы, затем вместо того, чтобы повторять ее вручную, мы автоматизируем создание формул для других.

Причина, по которой это делается так, заключается в том, чтопростая ссылка на внешний документ автоматически извлечет этот документ, а формула INDIRECT - нет,он будет тянуть его только в том случае, если он окажется открытым.

Можете ли вы пойти и вставить сюда формулу только для первой строки?

РЕДАКТИРОВАТЬ ниже:

yossup говорит: «Вот оно:»

=VLOOKUP($A3,'G:\Financial\Facility Work Papers and Financials\1. Operating Entities\Arbors\2. Financials\2018\4. Apr[Arbors April 2018.xls]Trial Balance'!$A$34:$H$84,8,0)

Хорошо, теперь мы хотим использовать приведенную ниже формулу, основанную на вашей приведенной выше, вставив ее в ячейку справа от этого листа,Неважно, где, так как мы скоро удалим его.

="=VLOOKUP($A"&ROW()&",'G:\Financial\Facility Work Papers and Financials\1. Operating Entities\Arbors\2. Financials\2018\"&BB1&"[Arbors "&BB2&" 2018.xls]Trial Balance'!$A$34:$H$84,8,0)"

Обратите внимание на строку () в начале, которая переместит нашу ссылку на эту ячейку A3 для нас.

Теперь мы можем скопироватьэта формула вниз, и она запишет нам формулы, которые нам нужно скопировать в основное резюме.Чтобы сделать это, я считаю, что проще всего открыть блокнот (он есть во всех Windows, просто посмотрите в меню «Пуск»), а затем скопировать эти ячейки в блокнот, а затем снова скопировать их обратно в Excel.Поскольку блокнот сбрасывает буфер обмена только в текст, он вставляется в виде формул, именно то, что нам нужно.

Теперь каждая ячейка имеет прямую ссылку на документы, из которых вы хотите извлечь, чтобы она могла получить к ним без нихбыть открытым.

Единственная проблема, которую я вижу, состоит в том, что если BB1 и BB2 на самом деле означают $ BB $ 1 и $ BB $ 2, то теперь вы потеряли динамический сменщик месяца.Надеюсь, что они не динамичны в этом смысле, и мы закончили.Я не могу судить по твоему скриншоту, поэтому я верю, что ты все сделал правильно.В противном случае мы можем попробовать vba дальше.

0 голосов
/ 05 июня 2018

Вам нужно поместить INDIRECT () вокруг вашей конкатенации следующим образом:

=IFERROR(VLOOKUP($A3,INDIRECT(CONCATENATE("'G:\Financial\Facility Work Papers and Financials\1. Operating Entities\Arbors Major Hospital\2. Financials\2018\",BB1,"\[Arbors"," ",BB2," ","2018.xls]Trial Balance'","!$A$30:$H$100")),8,FALSE),0)

Это превратит вашу конкатенацию из строки в диапазон, чтобы у VLOOKUP был нужный тип параметра.

РЕДАКТИРОВАТЬ - в нем отсутствовали запятая и скобки вокруг этого бита! $ A $ 30: $ H $ 100

Как только он примет формулу, вы можете обнаружить, что он на самом деле не выполняет поиск должным образом, если мынужно будет разбить формулу, чтобы убедиться, что у нас есть правильное расположение файла, затем мы можем получить правильное значение из Indirect, а затем, после этой работы, мы можем посмотреть на сам VLOOKUP, так как, возможно, его придется переписать как INDEX.(MATCH ...) вместо этого.

EDIT - INDIRECT требует, чтобы открываемые файлы были открыты, в противном случае выдается ошибка #REF.

...