Несмотря на то, что у этого есть превосходное (и принятое) решение VBA, я не мог устоять перед проблемой сделать это, не используя VBA.
Я опубликовал решение ранее, которое не будет работать во всех случаях.Этот новый код должен всегда работать:
=MAX(
IFERROR(IF(FIND(C$1&ROW($1:$99),$B2),ROW($1:$99),0),0),
IFERROR(IF(FIND(C$1&CHAR(ROW($65:$90)),$B2&"Z"),1,0),0)
)
Введите как формулу массива: Ctrl + Сдвиг + Введите
Выход:
Эта формула выходы 0, если не найдены, и я сима ply используется условное форматирование, чтобы превратить нули в серый цвет.
Как это работает
Эта часть формулы ищет элемент, за которым следует число от 1 до 99. Если обнаружено, число атомов возвращается. В противном случае возвращается 0. Результаты сохраняются в массиве:
IFERROR(IF(FIND(C$1&ROW($1:$99),$B2),ROW($1:$99),0),0)
В случае C13H25NO5, в поисках «C» возвращает этот массив:
{1,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,...,0}
1 является первым элементом массива, поскольку С1 совпадение , 13 является элементом тринадцатого массива, и это нас интересует.
Следующая часть формулы ищет элемент, за которым следует заглавная буква, которая указывает на новый элемент. (Буквы от A до Z обозначают символы от 65 до 90.) Если найдено, возвращается номер 1. В противном случае возвращается 0. Результаты сохраняются в массиве:
IFERROR(IF(FIND(C$1&CHAR(ROW($65:$90)),$B2&"Z"),1,0),0)
«Z» добавляется к химической формуле, так что матч будет найден, когда его последний элемент не имеет номера. (Например, «H2O».) В Периодической таблице нет элемента «Z», поэтому это не вызовет проблемы.
В случае C13H25NO5, в поисках «N» возвращает этот массив:
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}
1 является 15-элемент в массиве. Это потому, что он нашел буквы «НЕТ», а О - 15-ю букву алфавита.
Принимая максимальное значение из каждой матрицы, мы получаем количество атомов по желанию.
Являются ли строки фиксированными, я имею в виду, что каждая запись имеет алфавит, затем два числа, алфавит, а затем два числа, алфавит и остальные цифры? – Vasim
Итак, каждая запись имеет алфавит, но цифры могут отличаться. Например, вы можете получить C10H60, или вы можете получить CH4, который должен считать C как 1 или даже CH3O, который должен считать C и O равным 1 и H как 3 – user2062207
K, но все стандартно, так как всегда начинается с C затем следует H, а затем О. Право? – Vasim