У меня есть функция VLOOKUP которая возвращала 0 вместо пробелов, когда не было совпадений.

      A               B
1   Heading     Heading
2   Data A      The year is 2015
3   Data B            0

Для борьбы с этим я использовал функцию substitute :

=IFERROR(SUBSTITUTE(VLOOKUP($A2, 'HC Total'!A:C, 3), "0", ""), "")

Что в целом решает проблему, однако, если значение VLOOKUP содержит 0 любом месте, где оно заменяется. Например The year is 2015 The year is 215 .

Я хотел бы избежать использования:

=IF(VLOOKUP($A2, 'HC Total'!A:C, 3)=0, "", VLOOKUP($A2, 'HC Total'!A:C, 3))

Так как я не хочу дважды звонить в VLOOKUP если это поможет.

Возможно ли использовать функцию SUBSTITUTE для сопоставления и замены целых ячеек, содержащих 0 , а не появления 0?

1 ответ1

2

Ваш Vlookup() вызывает VLOOKUP($A2, 'HC Total'!A:C, 3) отсутствует параметр Range Lookup. Если этот параметр не указан, по умолчанию он будет равен True. Это скажет функции найти самое близкое соответствие, предполагая, что данные сортируются по возрастанию.

Попробуйте использовать:

=IFERROR(VLOOKUP($A2, 'HC Total'!A:C, 3,False), "")

Vlookup() вернет # N/A, если значение не найдено, и IfError() заменит его пустым.

РЕДАКТИРОВАТЬ: в ответ на ваш комментарий

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

Чтобы обойти это, используйте комбинацию IFERROR(VLOOKUP()) и используйте пользовательский формат для ячейки назначения
0;-0;;@
Если ваши значения содержат десятичные дроби, используйте
0.00;-0.00;;@

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