2

Мне нужно найти положение первого заглавного символа в строке Excel. В Интернете есть много ресурсов, которые имеют одно и то же (или фактически одно и то же) решение для этого:

=MIN(IF(ISERROR(FIND(CHAR(ROW(INDIRECT("65:90"))),A1)),"",FIND(CHAR(ROW(INDIRECT("65:90"))),A1)))

Однако это необычное использование функций. Я не смог найти объяснения, что именно он делает и как работает. Когда я сам использую эту формулу, она не работает.

Может кто-нибудь объяснить, как работает эта формула, чтобы я мог понять, что я могу делать неправильно?


Примечание: редакция 2 включает мой собственный ответ. Первоначальная версия была отложена, и я понял, что основная проблема заключалась в том, что я включил ответ в часть вопроса "вопрос". Если вопрос снят с рассмотрения, я сделаю ответ ответом и удалю эту заметку.

1 ответ1

0

Чтобы упростить механизм, лежащий в основе формулы Array, для возврата положения первой заглавной буквы в строке, а не вашей, я использовал простую формулу, которая поможет вам реализовать метод.

{=MATCH(1,(CODE(MID(B2,ROW($A$1:$A$255),1))<=90)*(CODE(MID(B2,ROW($A$1:$A$255),1))>=65),FALSE)}

Как работает формула:

  • Поскольку это формула массива, ее необходимо завершить с помощью Control+Shift+Enter .
  • Формула предполагает, что заглавная буква будет не более 255 символов.
  • С Match , 1 is for TRUE .
  • CODE(MID(B2,ROW($A$1:$A$255),1)) , возвращает массив символов ASCII, составляющих строку, возвращает массив из 255 элементов.

Предположим, что в B2 значение TxtDate .

  • Затем формула возвращается, {84;120;116;68;97;116;101} .

CODE(MID(B2,ROW($A$1:$A$255),1))<=90 , возвращает массив значений TRUE и FALSE зависимости от того, является ли код ASCII меньше или равен 90, где 90 - это код ASCII для заглавной Z и вернется,

{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}

Здесь 1-й алфавит T имеет код ASCII меньше 90.

3-я часть формулы проверяет коды ASCII, большие или равные 65, где 65 - заглавная буква A, возвращает аналогичный массив, который затем умножается на первый массив.

В Excel значение FALSE равно zero а TRUE - one . После того, как Формула умножит этот набор Массивов, она получит Массив с Ones & Zeros . Который выглядит так

{1;0;0;1;0;0;0}

Показывает, в позициях 1 и 4 - заглавные буквы. Теперь Формула использует MATCH function чтобы найти первые массивы в массиве и возвращает 1 .

Я верю, что приведенный выше пример с объяснением поможет вам понять, как работает Формула.

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