У меня есть несколько строк с ячейкой, содержащей текст.

Они все так отформатированы.

A1: У моей жены 2 яблока, а у меня 4 яблока
A2: Моя собака любит 3 яблока, а у меня 2 яблока
A3: у нас есть 1 яблоко

Я хотел бы пройти через каждую строку / текст ячейки с помощью формулы «НАЙТИ» и вернуть общее количество яблок, упомянутых в тексте, в каждой строке.

У меня есть следующее, но оно соответствует только первому экземпляру «яблоко».

=IFERROR(MID(B305,FIND("apple",B305,1)-7,1),"")

Пожалуйста, может ли кто-нибудь помочь мне в этом (казалось бы, простом) вопросе?

0
Grim B 24 Июл 2017 в 12:33
FIND может возвращать только одно значение. Чтобы вернуть несколько значений, вы можете использовать вспомогательные столбцы, каждый из которых использует начальное значение для предыдущего экземпляра.
 – 
Ron Rosenfeld
24 Июл 2017 в 13:36

2 ответа

Используйте эту формулу:

=(LEN(A1)-LEN(SUBSTITUTE(A1,"apple","")))/LEN("apple")

Перетащите / Скопируйте вниз, как требуется. Смотрите изображение для справки.

enter image description here

ПРИМЕЧАНИЕ. SUBSTITUTE - чувствительная к регистру функция и даст неверный результат, если apple используется как Apple в формуле, как указано из комментариев @ gms0ulman. Следовательно, вместо нее можно использовать следующую формулу.

=(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),UPPER("Apple"),"")))/LEN("Apple")
1
Mrig 24 Июл 2017 в 14:01
Предостережение: с учетом регистра.
 – 
g.sulman
24 Июл 2017 в 13:49
Интересно. Я бы предположил, что ему нужно общее количество яблок, поэтому он вернет B1: 6; B2: 5; B3: 1
 – 
Ron Rosenfeld
24 Июл 2017 в 13:50
- Первоначально даже я думал, что OP хочет общее количество в столбце, но его формула предполагала, что это всего одна ячейка.
 – 
Mrig
24 Июл 2017 в 13:55
Я смотрел на эту строку в его вопросе общее количество упомянутых яблок . Я также отправлю ответ, и я думаю, что он в конце концов прояснит.
 – 
Ron Rosenfeld
24 Июл 2017 в 14:09
- Я скорее придал значение яблокам, упомянутым в тексте, в строке . Но, как вы сказали, прояснить может только OP. Хоть +1 от меня.
 – 
Mrig
24 Июл 2017 в 14:16

Мне неясно, хотите ли вы вернуть количество упоминаний яблока или общее количество яблок в строке.

Если вам нужно общее количество яблок в строке, попробуйте эту формулу (обратите внимание, что мы должны искать apples и apple отдельно).

Сначала введите именованную формулу (Formula --> Define Name)

Где

seq_99  Refers to   =IF(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))=1,1,(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))-1)*99)

Тогда вы можете использовать эту формулу:

C1: =SUM(IFERROR((TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",99)),seq_99,99))="apples")*TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",99)),seq_99-99,99)),0))+
SUM(IFERROR((TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",99)),seq_99,99))="apple")*TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",99)),seq_99-99,99)),0))

Формула является формулой массива , поэтому ее необходимо вводить, удерживая ctrl + shift и одновременно нажимая Enter .

Вы можете заполнять столько, сколько необходимо.

Формула

  • разбивает предложение на массив
  • сравнивает каждый элемент в массиве с "яблоком"
  • если он совпадает, он суммирует предыдущий элемент массива

enter image description here

1
Ron Rosenfeld 24 Июл 2017 в 19:33