У меня есть формула в ячейке:
=IF(INDEX(insurance_column_date,LOOKUP(2,1/(insurance_column_to=B59),ROW(insurance_column_to))-4)>0,INDEX(insurance_column_date,LOOKUP(2,1/(insurance_column_to=B59),ROW(insurance_column_to))-4),"No data")
И это прекрасно работает в большинстве случаев, но когда не удается найти искомое значение, возникает ошибка деления на 0 в 1/(insurance_column_to=B59)
. В этом случае я получаю # N/A. Справедливо. Поэтому я добавляю функцию iferror в ячейку:
=IFERROR(IF(INDEX(insurance_column_date,LOOKUP(2,1/(insurance_column_to=B59),ROW(insurance_column_to))-4)>0,INDEX(insurance_column_date,LOOKUP(2,1/(insurance_column_to=B59),ROW(insurance_column_to))-4),"No data"),"No data")
И все идеально. Я получаю "Нет данных" в соответствующих клетках.
Однако, когда я запускаю (совершенно не связанный) макрос - который должен скрывать определенные строки - я теперь получаю ошибку времени выполнения 1004: «Ошибка приложения или объекта» при попадании в эту строку: pWorksheetName = ActiveWorkbook.Names(pCounter).RefersToRange.Parent.Name
Даже если я верну формулу с ее синтаксисом, отличным от iferror(), ошибка во время выполнения все равно появится. Я читал, что некоторые причины могут заключаться в том, что формула приведет к строке длиной более 911 символов (в данном случае это невозможно) или содержит слишком много записей легенды (не знаю, что это такое). Я запустил макрос на двух разных компьютерах и получил одинаковые результаты.
Кто-нибудь знает в чем причина этого или как это исправить?