Я использую Excel 2010 и у меня есть два рабочих листа. Лист A содержит столбец уникального идентификатора и другие столбцы со значениями. Лист B содержит список идентификаторов и других полей, для которых я использую формулу VLOOKUP
для заполнения из значений в Листе A.
В идеале я хотел бы редактировать значения на листе B и обновлять их на листе A, но это не представляется возможным - когда я пытаюсь это сделать, я просто перезаписываю свою =VLOOKUP
формулу необработанными данными. Я прав, что нет способа сделать это?
Или есть ли способ щелкнуть или как-то автоматически перейти из ячейки, содержащей VLOOKUP
формулу на листе B, в исходную ячейку на листе A?
Моя общая цель — хранить все необработанные значения на листе A и ссылаться на них только с листа B, не выполняя ручной поиск на листе A для обновления данных.
решение1
Для реализации вашего альтернативного запроса вы можете использовать функцию 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 при щелчке по ячейке.
решение2
Основная проблема, с которой вы сейчас сталкиваетесь, — это циклические ссылки.
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, поэтому он будет динамически изменяться, если столбец обновления будет иметь новые значения. Обратите внимание, что это на самом деле не решает проблему циклической ссылки, а просто обходит ее.
Однако если вам нужно, чтобы на листе А были фиксированные значения, а не относительные, вам придется либо скопировать, paste as value
либо использовать что-то вроде:
ActiveSheet.Range("A1:D1000").Value = ActiveSheet.Range("A1:D1000").Value
в VB для преобразования относительных значений (с формулами) в фиксированные значения.