Несколько иной подход работал довольно аккуратно.
Во-первых, исправление моего первоначального вопроса: когда я сказал, что "Целые числа> 1 всегда действительны", я имел в виду "Целые числа> 0 всегда действительны", что несущественно ничего не менять.
1) срок действия "того же элемента"
В запасном столбце (AF) я поместил формулу, чтобы оценить, является ли "тот же элемент" действительной записью
= AND(AD2 = AD1, G2 = G1, H2 = H1)
.
Это имело незначительное преимущество, заключающееся в упрощении формулы в AE2, которая теперь становится
=OR(AD2 = "", AND(AF2, J2 = "same items"), IFERROR(ROUND(ABS(J2-1),0) = J2-1, FALSE))
(благодаря @FoxfireAndBurnsAndBurns за напоминание о столбце IFERROR
)
2)допустимые элементы
В другом запасном столбце (AH) я перечислил все допустимые записи, включая текст «те же элементы», что и первое значение в списке.Это наложило верхний предел на допустимые целые числа, но в моем случае достаточно нескольких тысяч (это количество протестированных элементов).
3) именованный диапазон допустимых элементов
Теперь я создал именованный диапазон какформула.Я считаю формулу именованных диапазонов очень полезной, и я довольно часто использую эту конструкцию, чтобы автоматически настраивать диапазон на количество используемых строк.
n_items =OFFSET($AH$1, 0,0, COUNTA($AH:$AH))
4) проверка списка в целевой ячейке
НаконецЯ установил проверку J2 на
Разрешить: List
Источник: =IF($AF2, n_items, OFFSET(n_items,1,0))
Работа выполнена!Незначительное преимущество: пользователи могут (если они действительны) выбирать «те же элементы» с помощью раскрывающегося списка, а не вводить текст.
Я до сих пор не понимаю поведение моей первоначальной попытки или @FoxfireAndBurnsAndBurns, но янашел решение, которое работает для меня и у которого нет времени, чтобы пройти по этой кроличьей норе: