
В таблице Excel 2016:
У меня есть формула, которую я использую для проверки того, имеют ли родительские записи правильные значения «Использовать с» (если дочерняя запись имеет значение «Использовать с», то и ее родительские записи должны иметь его). Дополнительная информацияздесь.
Столбец B =
IFERROR(IF(SUMPRODUCT(COUNTIF(INDEX( C:E, [@[Parent - RowNum]],0),Table1[@[Use With 1]:[Use With 3]]))<>COUNTA(Table1[@[Use With 1]:[Use With 3]]), "error", ""),"")
Например, если бы я удалил значение в ячейке C2, формула успешно отметила бы его как вызывающее ошибку:
Вопрос:
Я пытаюсь преобразовать всеявные ссылки на ячейки-к-структурированные ссылки(иначе говоря, имена столбцов таблицы). Я хочу сделать это, чтобы избежать некоторых проблем, которые у меня возникали при добавлении/удалении столбцов в электронной таблице (и потому что я предполагаю, что это лучшая практика/более чистый метод).
Я пробовал заменить C:E
на Table1[[Use With 1]:[Use With 3]]
.
=IFERROR(IF(SUMPRODUCT(COUNTIF(INDEX( Table1[[Use With 1]:[Use With 3]], [@[Parent - RowNum]],0),Table1[@[Use With 1]:[Use With 3]]))<>COUNTA(Table1[@[Use With 1]:[Use With 3]]), "error", ""),"")
Однако когда я это делаю, формула работает неправильно — она не помечает проблемные строки как «ошибку».
Как правильно использовать имена столбцов таблицы в качестве диапазона в массиве индексов (вместо использования явных ссылок на ячейки)?
решение1
Мне просто нужно было добавить [#All],
индексный массив.
Table1[[#All],[Use With 1]:[Use With 3]]
Полная формула:
=IF(SUMPRODUCT(COUNTIF(INDEX( Table1[[#All],[Use With 1]:[Use With 3]], [@[Parent - RowNum]],0),Table1[@[Use With 1]:[Use With 3]]))<>COUNTA(Table1[@[Use With 1]:[Use With 3]]), "error", "")