1

Я использую Excel 2010 и у меня есть две таблицы. Лист А имеет уникальный столбец идентификатора и другие столбцы со значениями. На листе B есть список идентификаторов и других полей, для которых я использую формулу VLOOKUP для заполнения значений в листе A.

В идеале я хотел бы отредактировать значения на листе B и обновить их на листе A, но это не представляется возможным - когда я пытаюсь это сделать, я просто перезаписываю формулу =VLOOKUP необработанными данными. Я прав, что нет способа сделать это?

В качестве альтернативы, есть ли хитрость, чтобы щелкнуть или каким-то образом автоматически перейти из ячейки, содержащей формулу VLOOKUP на Листе B, к исходной ячейке на Листе A?

Моя общая цель - сохранить все необработанные значения на листе A и ссылаться на них только на листе B без необходимости вручную искать лист A для обновления данных.

2 ответа2

0

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

VLOOKUP не является отношением A = B но больше похоже на отношение if A then B (где A и B - массивы значений, как в вашем случае). Другими словами, он однонаправлен, и A не зависит от B. Из того, что я вижу, я не думаю, что в Excel есть прямой способ обработки циклической ссылки исключительно с использованием пользовательского интерфейса, поскольку формула не может быть сохранена в бэкэнде (если вы не используете макрос).

Один из способов заключается в том, чтобы иметь относительные значения как в A, так и в B, и третий лист (или много дополнительных столбцов) для выполнения некоторых условных ячеек, например, лист A содержит относительное значение (которое может быть новым обновленным значением в B или исходным значением в C). ), Лист C содержит исходные значения, а лист B содержит ячейки для отражения значений и обновления значений.

На листе B создайте новый столбец для каждого столбца, на который есть ссылки. Это будет столбец значений обновления. На листе C сохраните исходные значения. На листе A используйте условие, которое говорит: «Если поле значений обновления на листе B имеет значение, используйте его, иначе обратитесь к листу C». Столбец отражающих значений листа B будет по-прежнему ссылаться на лист A, поэтому он будет динамически изменяться, если в столбце обновления будут новые значения. Обратите внимание, что это на самом деле не решает проблему циклических ссылок, а просто обходит ее.

Однако если вам нужно, чтобы лист A был фиксированным, а не относительным значением, вам придется либо скопировать и paste as value либо использовать что-то вроде:

ActiveSheet.Range("A1:D1000").Value = ActiveSheet.Range("A1:D1000").Value

в VB конвертировать относительные значения (с формулами) в фиксированные значения.

0

Чтобы реализовать альтернативный запрос, вы можете использовать функцию HYPERLINK в сочетании с VLOOKUP

Предполагая, что Sheet A содержит идентификаторы в столбце A и значения в столбце B, замените VLOOKUP на

=HYPERLINK("#'Sheet A'!B"&MATCH(A2,'Sheet A'!$A:$A,0),VLOOKUP(A2,'Sheet A'!$A:$B,2,0))

Это будет не только отображать результат VLOOKUP как раньше, но и гиперссылку на найденное значение в листе A при щелчке по ячейке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .