Проверка данных Excel: ограничение длины формулы или ошибка? - PullRequest
1 голос
/ 26 марта 2020

Справочная информация: Я столкнулся с необычным поведением при работе с пользовательской формулой проверки данных Excel.

Вот справочная ветка, с которой она началась.

Проверка данных Excel 2010 позволяет задавать c макет

В принципе, когда я пытался ввести следующую формулу в Excel Data Validation | Custom Formula, тогда копирование / вставка просто не работали.

=AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)

Он принимал Копировать / Вставить до 65))=65 части, но оттуда не принимал. Я попытался ввести какой-то фиктивный текст в дополнение к вставленной части, которую принял Excel. Это привело меня к мысли, что формула может быть реализована через маршрут Excel VBA. Следующий код работает и добавляет DV в ячейку A1.

With Range("A1")
    .Value = "12_AB1-23_ADC_AZ-123"
    .Validation.Add xlValidateCustom, , , "=AND(COUNTIF(A1,""??_???-??_???_??-???""),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)"
End With

У меня Excel 2016. Я подозреваю, что оригинальный плакат с гиперссылкой может также столкнуться с той же проблемой.

Вопрос:

Предел наверняка превышает 180 (один поиск в SO говорит 210: Как преодолеть ограничение максимальной длины формулы в Excel - ошибка Excel? ), но через VBA можно реализовать DV за этим пределом. Почему ограничение применяется только к блоку формул, поскольку Excel принимает ту же самую длинную формулу (длиной 271 символ) через макрос VBA?

Я думаю, что это какая-то ошибка в Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...