Excel - Сохранение исходного значения ячейки с помощью функций VLookup и Iferror
Я застрял с формулой Vlookup, с которой я работаю. Мне нужно применить формулу vlookup ко всему столбцу, но здесь есть одна загвоздка - мне нужна формула, чтобы ничего не делать, если она возвращает ошибку. В ячейках есть значения, которые мне нужно сохранить, если Vlookup не работает. Поэтому я не хочу, чтобы "N/A", и я не могу вернуть пустое значение, если оно не было пустым ранее, мне нужно, чтобы оно оставляло исходное значение ячейки или оставляло пустым, если оно ранее было пустым, и Vlookup не работает на этом. Кто-нибудь знает как это сделать?
Вот мой взгляд: VLOOKUP(B8, "Pd Rollers"!$F$9:$J$427,3, ЛОЖЬ)
Я пробовал несколько вариантов этих формул, и мне не повезло заставить его работать должным образом:
= IFERROR (VLOOKUP (B8, 'Pd Rollers'!$F$9:$J$427,3, FALSE), ячейка ("контент"))
IF (ошибка =VLOOKUP(C3, "Pd Rollers"!$F$9:$J$427,4,FALSE),CELL("содержимое"),VLOOKUP(C3, "Pd Rollers"!$F$9:$J$427,4,FALSE))
Любая помощь приветствуется, спасибо!
1 ответ
Вы находитесь на правильном пути с первым примером,=IFERROR(VLOOKUP(B8,'Pd Rollers'!$F$9:$J$427,3,FALSE),cell("content"))
(за исключением того, что это должно бытьcontents
(множественное число) против.content
).
Есть две вещи, которые вы должны сделать, чтобы это заработало. Сначала нужно добавить ссылку наCELL()
функция. Предположим, ваша формула находится в A1. Тогда этот компонент будетCELL("contents
,А1)`.
Но что заставляет эту работу работать, так это включить итеративные вычисления, чтобы их цикличность не приводила к сбою вычислений и помещению «0» в ячейку. Сделайте это в общих настройках Excel:File|Options
выбравFormulas
области и сразу вверху, справа, поставив галочку напротивEnable iterative calculation
а затем установкаMaximum Iterations
до «1» («1» в частности, а не просто что-то маленькое или близкое... именно «1»).
Тем не менее, вы должны запустить формулу, чтобы она имела приемлемое начальное значение, в противном случае все, что появится при вводе формулы, будет сохраненным значением. Итак, по сути, успешно запустите поиск, а затем отправьте его себе или своим пользователям, чтобы они могли запустить его с любыми необходимыми значениями.
Любой успех будет сохраняться до тех пор, пока новое использование формулы клетки не приведет к новому успеху. Итак, сохраняется до тех пор, пока не будет создано что-то новое, подходящее, которое затем само будет сохраняться до тех пор, пока... и так далее.
(Обратите внимание, что это работает в ВАШЕМ сценарии, в котором у вас есть формула в ячейке, а именно формула поиска. Если у вас было значение (то, что Excel называет «константой»), например «синий», в ячейке, это не формула, она не будет сохраняться в приведенном выше. Но тогда у вас будут компоненты простогоIFFERROR()
функция, и нет необходимости преодолевать подобные препятствия, так что это не имеет большого значения.)
Конечно, изменение базовых настроек таким образом довольно важно для большинства людей, и часто можно увидеть обратное изменение, когда вы закончите с забытой электронной таблицей, с сопутствующими эффектами. Я не знаю навскидку, доступен ли этот параметр для изменения через VBA, но если да, то было бы неплохо добавить макрос, который запускается для его установки при открытии файла, и макрос, который запускается для его сброса при закрытии файла. . Если эти макросы доступны для установки, их должно быть очень просто написать. Он может быть даже доступен через средство записи макросов, поэтому не требуется никаких реальных знаний о VBA, предшествующих созданию макросов.On Open
иOn Close
.
Протестировал устройство записи макросов, и вот его выходные данные для сброса моих настроек после их изменения, чтобы проверить конечную формулу по сравнению с вашей:
Sub Macro1()
'
' Macro1 Macro
'
'
With Application
.Iteration = False
.MaxIterations = 100
End With
End Sub
Очевидно, что для его установки будет просто использоватьсяTrue
для.Iteration
и1
для.MaxIterations
.