Найдем количество вхождений подстроки (части строки, последовательности символов) в исходной текстовой строке.
Определим число вхождений подстроки ZZ в слове Z
Zigzzag
(пусть слово находится в ячейке
A
1
)
.
Формула для подсчета с учетом регистра, см.
файл примера
:
=(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;»ZZ»;»»)))/ДЛСТР(«ZZ»)
Ответ: число вхождений равно 1.
Теперь без учета регистра:
=(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(СТРОЧН(A1);»zz»;»»)))/ДЛСТР(«zz»)
В статье
Подсчет вхождений символа
показано, как подсчитать количество вхождений одного символа в текстовой строке.
I am trying to count the number of times a sub-string appears within a column of string data in Excel. Please see the below example.
The column of string data (tweets) looks like this:
A
1 An example string with @username in it
2 RT @AwesomeUser says @username is awesome
The column with «substrings» (Twitter screen names) looks like this:
B
1 username
2 AwesomeUser
I want to use a formula to count the number of times that a substring from B1, B2, etc. appears in the strings in column A. For example: a formula searching for B1 would return «2» and a search for B2 would return «1».
I can’t do it this way:
=COUNTIF(A:A, "username")
because COUNTIF only looks for strings, not substrings. This formula would always return «0».
Here’s a formula I thought might do it:
=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username"))
Unfortunately, I have 16,000 entries in column B and tens of thousands in A, so counting characters won’t work even on a high power PC (also, the result returned by the function is suspect).
I thought about using:
=COUNTIF(A:A, "*username*")
but COUNTIF requires a string with the star operators; I need to use cell references due to the volume of data.
My question: does anyone know how I can use a formula for this? If using COUNTIF, how do I get a cell reference in the conditional part of the statement (or use a function to substitute the string in the cell referenced within the conditional part of a COUNTIF statement)?
I know that I could parse the data, but I would like to know how to do it in Excel.
Недавно коллега спросил, как подсчитать число вхождений подстроки (определенного символа) в текст, размещенный в одной ячейке? Я давно знал, что в Excel нет такой функции. И вот вчера написал небольшую пользовательскую функцию КолСимв. [1] Вот ее код:
Function КолСимв(строка As String, символ As String) As Integer
Application.Volatile True
Dim TestPos As Integer
КолСимв = 0
TestPos = 1
Do While InStr(TestPos, строка, символ) > 0
КолСимв = КолСимв + 1
TestPos = InStr(TestPos, строка, символ) + Len(символ)
Loop
End Function
Мастер функции КолСимв предлагает выбрать, «строку» – в чем ищем, и «символ» – что ищем (рис. 1). При этом «символ» может содержать и несколько символов (подстроку).
Рис. 1. Мастер функции КолСимв, подсчитывающей число вхождений символа (подстроки) в текст
Скачать заметку в формате Word, пример в формате архива zip (внутри архива вы найдете Excel файл с макросом; политика провайдера не позволяет мне загрузить файл Excel, содержащий код VBA)
Ниже я расскажу подробнее о функции и о том, как работает код VBA.
Гордый собою, я решил обратиться к Интернету, чтобы сравнить свое детище с другими идеями. И… наткнулся на решение без привлечения VBA кода!
Вот что пишет Пол Мак-Федрис в книге «Формулы и функции в Microsoft Office Excel 2007». В разделе, посвященном текстовым функциям, в примечаниях к описанию функции ПОДСТАВИТЬ:
Одним из неожиданных способов использования функции ПОДСТАВИТЬ() является подсчет количества вхождений определенного символа в заданной строке. Идея состоит в том, что при удалении определенного символа из строки разница в длине между исходной строкой и полученной строкой в точности равна количеству вхождений данного символа в исходной строке. Например, строка «издержки» состоит из 8 символов. Если удалить из строки все символы «и», то длина оставшейся строки будет 6 символов. Разница между длиной исходной и длиной полученной строки составляет 2 – именно столько раз символ «и» встречался в исходной строке. Чтобы выполнить такую операцию в формуле, необходимо использовать функцию ДЛСТР() и вычесть длину строки после удаления символа из длины исходной строки:
=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"
и"
;"
"
))
Джон Уокенбах в книге «Excel 2007. Библия пользователя» развивает эту идею, приводя формулу, способную подсчитать число вхождений подстрок в текст:
Формула представленная ниже подсчитывает количество вхождении подстроки, состоящей из нескольких символов (но, и один не возбраняется, прим. мое) в заданную текстовую строку. Пусть искомая подстрока находится в ячейке B1, а просматриваемый текст — в ячейке A2:
=(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;B1;"
"
)))/ДЛСТР(B1)
Для любознательных и начинающих VBA-программистов (коим, в сущности, являюсь и я) поясню, как работает код пользовательской функции КолСимв.
Function КолСимв(строка As String, символ As String) As Integer
Функция передает из Excel в VBA две текстовые строки: строка и символ. Значение функции является целым.
Dim TestPos As Integer
КолСимв = 0
TestPos = 1
Задается переменная TestPos – позиция, с которой будет искаться символ (подстрока) в строке, а также начальные значения самой функции КолСимв = 0 и переменной TestPos = 1.
Do While InStr(TestPos, строка, символ) > 0
КолСимв = КолСимв + 1
TestPos = InStr(TestPos, строка, символ) + Len(символ)
Loop
Цикл, выполняется до тех пор, пока значение InStr больше нуля. Функция VBA InStr – аналог Excel`евской НАЙТИ. Они обе возвращают позицию в строке, относительно начальной, с которой начинается искомый символ. Значение InStr будет больше нуля, пока символ будет входить в строку. Как только символ не будет найден в строке, функция InStr выдаст значение ошибки, и цикл прекратится.
КолСимв = КолСимв + 1
После каждого попадания внутрь цикла значение КолСимв будет увеличиваться на единицу; если ни одного символа не будет найдено в строке, КолСимв так и останется равным нулю.
TestPos = InStr(TestPos, строка, символ) + Len(символ)
Также внутри цикла происходит увеличение начальной позиции поиска для следующего цикла. Напомню, что InStr возвращает номер позиции. Затем это значение TestPos увеличивается на длину символа (единицу, если мы ищем вхождение единичного символа). В следующем цикле символ будет искаться с позиции сразу после окончания вхождения всего предыдущего символа в строку (рис. 2а).
Рис. 2. Принципы поиска символа «апа» в строке: (а) начальная позиция следующего поиска отстоит от начальной позиции предыдущего найденного вхождения на длину символа; (б) начальная позиция следующего поиска отстоит от начальной позиции предыдущего найденного вхождения на единицу
Представленный код функции КолСимв найдет 5 вхождений символа «апа» в строку «апапапапапапапапапапап». То есть, следующее вхождение будет искаться только после окончания предыдущего вхождения.
Если строку кода
TestPos = InStr(TestPos, строка, символ) + Len(символ)
заменить на
TestPos = InStr(TestPos, строка, символ) + 1
то функция КолСимв найдет 10 вхождений символа «апа» в строку «апапапапапапапапапапап», как показано на рис. 2б.
Обратите также внимание, что функция КолСимв чувствительна к языку (см. рис. 1): русский символ «а» в англоязычной строке «afff» не находится…
[1] Если вы никогда не создавали пользовательских функций, вам сюда. Не пугайтесь, это совсем несложно! 🙂
How can I count the number of occurrences of a substring within a cell?
For example:
| | A |
| 1 |John,John,Tom,David|
What formula would I use if I want to return the number of occurrences of «John» in cell A1 (=2)?
fixer1234
26.9k61 gold badges72 silver badges116 bronze badges
asked Jul 24, 2010 at 3:26
Wow, after searching around for a month on this problem, I stumbled upon the answer after posting this question. Here is what I came up with in case anyone else has this problem.
=SUM(IF(ISNUMBER(FIND("John"; SPLIT(A1; ",")));1;0))
This is an array formula so will need to be entered using Ctrl+Shift+Enter.
If anyone thinks of a better way to solve this problem, please let me know!
ahsteele
1,86011 gold badges34 silver badges52 bronze badges
answered Jul 24, 2010 at 4:04
johnLjohnL
2721 gold badge3 silver badges9 bronze badges
3
Here’s an approach that works in Google spreadsheets:
=COUNTIF(SPLIT(A1,","),"John")
Ƭᴇcʜιᴇ007
111k19 gold badges199 silver badges264 bronze badges
answered Feb 6, 2015 at 6:56
erwamanerwaman
1611 silver badge3 bronze badges
4
I think you probably found the best way.
An alternative:
=(LEN(A1)-LEN(SUBSTITUTE(A1,"John",)))/LEN("John")
answered Jul 24, 2010 at 14:16
variantvariant
1,88013 silver badges12 bronze badges
2
Only for Google Sheets
I came up with the following alternative way:
=LEN(REGEXREPLACE(SUBSTITUTE(SUBSTITUTE(A1;"@";"");"John";"@");"[^@]";""))
Explanation:
- We choose a special character (can be any character not in the target sub-string) and remove it from the string
- We replace the sub-string we are searching for with this char
- We replace any character that is not our special character with nothing
- We count the length of the resulting string and this is the number of occurrences of the sub-string.
robinCTS
4,3174 gold badges19 silver badges29 bronze badges
answered Jun 27, 2018 at 9:01
GneuhGneuh
212 bronze badges
1
The code given by @erwaman has to work with delimiters.
=COUNTIF(SPLIT(A1,","),"John")
The alternative code given by @variant doesn’t need delimiters.
=(LEN(A1)-LEN(SUBSTITUTE(A1,"John",)))/LEN("John")
I was working with cells that had a list separated by commas. I needed to count how long the list was and the second bit of code worked like a charm.
If the string you are searching for happens to be 1 character like «,» or » » you can simplify it to this.
=LEN(A1)-LEN(SUBSTITUTE(A1,",",))
answered Feb 10 at 7:50
I don’t have the reputation to comment in the above thread, but I was able to extend JohnL’s answer so that it works on multiple cells:
=ArrayFormula(SUM(IF(ISNUMBER(find ("search text", split(Concatenate(A1:A3), ","))),1,0)))
where A1:A3
are the cells and «search text» is the text to search.
answered Feb 5, 2016 at 19:04
FelixFelix
11 bronze badge
Подсчет вхождений в MS EXCEL Букв (Символов) в ТЕКСТовой строке
Смотрите также ЮрияМ.: Смотря что уar = Cells(Rows.Count,
Cells(i, 5) =AVI excel как будет: 1 Меня интересует кол-во
) =3 отличаются.Serge_007Уточняю второй вопрос (включая и «=»
Аналогичная формула =СУММПРОИЗВ(ДЛСТР(A7:A11)-ДЛСТР(ПОДСТАВИТЬ(СТРОЧН(A7:A11); {«1″;»2″};»»)))
вхождений некоторой последовательностиНайдем количество вхождений определенной2. Формула, показанная вас в А1,
4).End(xlUp).Row
CStr(13 — Len(Trim(Cells(i,: Добрый день! звучать функция?{/post}{/quote}0mega
trig = True
чисел0mega0mega:Quote )
может подсчитать количество символов в текстовой Буквы или любого в этой теме. дата или текст…
excel2.ru
Подсчет символов в диапазоне в MS EXCEL
For i = 4))) & Trim(Cells(i,В столбце D
нашла уже, спасибо,ElseSerge_007
:: Да, конечно.0mega
(0mega)200?’200px’:»+(this.scrollHeight+5)+’px’);»>вопрос 2-ой
P.S. цифр (1 и
строке.
символа в ячейкеИли Вы видитеЮрий М 3 To ar 4))) число с количеством
LEN
По второму вопросу…trig = False: Макрофункции — этоkim=(47+В3-2)/D5-12 =4
, вчитайтесь в вопросA1=(47+В3-2)/D5-12если эти 2 2) в диапазонахО поиске позиции n-го EXCEL. только свое сообщение?: Скопируйте название своейCells(i, 5) =Next i цифр от 7Подскажите пожалуйста как в0mega
excel2.ru
Счет определенных символов в ячейке
End If не ВБА, как
, здравствуйте
- это не
_Boroda_
кол-во цифр ? вопроса имеют отличие
с числами.
вхождения буквы в
Определим, сколько букв Z
аррр темы в окно Format(Cells(i, 4), «‘0000000000000»)
End Sub
до 12-ти Excel показать количество:Next Вы его понимаетеЯ прекрасно понимаю,
набор случайных символов.:кол-во математических знаков? в решении, тогда
Пусть в диапазоне
слове или в
в слове Zigzag: Спасибо! поиска и выбирайте,Next iЯ определил сколькоМне необходимо в определённых символов. В
kimMsgBox xHugo что этот вопрос
Это совокупность математических
Quote (включая и «=»
просьба к модераторам
А7:A11 текстовой строке можно
(слово находится в
Numit
что Вам большеEnd Sub нулей добавить, но
столбец Е добавить частности есть таблица,End Sub: VBA не вписывается в действий с конкретными(_Boroda_)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Вы хотите выковырять
) перенести 2-ой вопроссодержатся числа 1;
прочитать здесь. ячейке: Помогите пожалуйста, подходит.AVI как заставить их эти же числа с размерами. НужноСпасибо,_Boroda_
Запятую грубо уничтожаем. =ЕСЛИ(…) числами и ячейками. кол-во цифр изкол-во цифр: A1=( в отдельную тему
22; 123; 8;Найдем количество вхождений определенногоA1как формулой посчитатьGuest: добавиться я не так, что бы
суммировать сколько напримерИнтересное решение со: Формулами200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub tt()
Учитывая, то обстоятельство И если топнуть формулы, которая выдает47_Boroda_
5. Формула, приведенная символа в диапазоне).
количество знаков в: Спасибо нашел!!! =ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;».»;»»))_Boroda_ знаю
общее их количество размеров L и
знаками200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ(—(ЕЧИСЛО(-ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1))+ЕОШИБКА(-ПСТР(A1&» «;СТРОКА(ДВССЫЛ(«A2:A»&ДЛСТР(A1)+1));1))=2))-СУММ(—(ЕЧИСЛО(-ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1))+(ПСТР(A1&» «;СТРОКА(ДВССЫЛ(«A2:A»&ДЛСТР(A1)+1));1)=»,»)+ЕЧИСЛО(-ПСТР(A1&»»;СТРОКА(ДВССЫЛ(«A3:A»&ДЛСТР(A1)+2));1))=3))Dim s As
, что это на Enter то в ячейке+В3-: Пара вариантов по выше, вернет 5, ячеек.Формула для подсчета символа
ячейке?
— работает как, Е-мае, точно. Спасибо.StoTisteg было 13, а сколько XL. Беда
NumitПоследний кусок — исключительно
String, i As вопрос не из в ячейка А1значение2
первому вопросу во т.к. в диапазонеОпределим, сколько букв Z
Z в словеЗаранее спасибо часы ))Марат
: недостающие заменить нулями в том, что: Помогите пожалуйста,
для борьбы с Long, x As серии «МНЕ ОБЯЗАТЕЛЬНО будет результат вычисления(то есть формат)/D5- вложении содержится две цифры содержится в диапазоне Zigzag (с учетомmazayZRЮрий М: Добрый деньCells(i, 5)=Cstr(Trim(Cells(i, 5))) в начале числа.
формулы которые якак формулой посчитать запятой. Если все Long НАДО. Я СКОПИРУЮ (напр 53,6451) ячейки не текстовый)?
12=ДЛСТР(B1)-ДЛСТР(ПОДСТАВИТЬ(B1;B2;»»)) 1 (в числахА7:A11
регистра), см. файл: =ДЛСТР(A1)
: А если всегда
Помогите подсчитать количество
For j=13 toТо есть 41533892 нашёл количество знаков в
числа целые, тоDim trig As
И ВСТАВЛЮ ...P.S.kim=
{=СУММ(--(ПСТР(B1;СТРОКА(ДВССЫЛ("A1:A"&ДЛСТР(B1)));1)=B2))} 1 и 123)
. примера:
Numit начинать с поиска?
символов в ячейке. Len(Cells(i, 5).Value) Step должно поменяться нанапример
ячейке?
попроще
Boolean
" а относится
Оказывается , я
:
3
По второму — Вы и три цифры
Формула для подсчета (с
=ДЛСТР(A1) — ДЛСТР(ПОДСТАВИТЬ(A1;»Z»;»»)): Спасибо, а то :-)) Пример ячейка A1 -1
0000041533892, а 31404053
=СУММПРОИЗВ (ДЛСТР ($E$2:$E$47)-ДЛСТР
Заранее спасибоCode200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ(—(ЕЧИСЛО(-ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1))+ЕОШИБКА(-ПСТР(A1&» «;СТРОКА(ДВССЫЛ(«A2:A»&ДЛСТР(A1)+1));1))=2))
s = «За к «ХОЧУ ЗНАТЬ» так же не0megaкол-во математических знаков? хотите выковырять кол-во
2 (в числах учетом РЕгиСТра), см.
Формула для подсчета символа прям вся измучаласьСергей «1.09» и A2
Cells(i, 5)=»0″ &
на 0000031404053 (ПОДСТАВИТЬ (ПРОПИСН ($E$2:$E$47);{«L»};»»)))mazayZRформулы массива
2 дня оштрафовали
и еще сюда могу выковырять цифры
excelworld.ru
Как посчитать количество знаков в ячейке?
, (включая и «=»
цифр из формулы, 22 и 123). файл примера:
Z (или z)
:): Есть формула которая
«10» какую можно Cells(i, 5)Формулой получается такили
: =ДЛСТР(A1)MCH 18 водителей на приплюсовать что я
и из текстаЕсли запись в ) которая выдает в
0mega=СУММПРОИЗВ(ДЛСТР(A7:A11)-ДЛСТР(ПОДСТАВИТЬ(A7:A11;B4;»»)))
planetaexcel.ru
Подсчёт определённого количества символов в ячейке Excel
в слове ZigzagGuest производит подсчет необходимых использовать функцию чтоNext j=ПОВТОР(«0″;13-ДЛСТР(D3))&D3=СУММПРОИЗВ (ДЛСТР (E2:E27)-ДЛСТРNumit: =СУММПРОИЗВ(ЕЧИСЛО(—ПСТР(ПОДСТАВИТЬ(A1;»,»;»»);СТОЛБЕЦ(A:IU);1))*ЕОШ(—ПСТР(ПОДСТАВИТЬ(A1;»,»;»»);СТОЛБЕЦ(A:IU)+1;1))) 142,56 руб « в VBA-командах ,
…
ячейке A1 являетсяA1
ячейке значение (то
: Доброго времени суток.Формула для подсчета (без
(без учета РЕгиСТра):: а в английском знаков в ячейке. бы мне подсчиталоНе проверял, ноА как добавлять
(ПОДСТАВИТЬ (E2:E27;»L»;»»))): Спасибо, а то
Добавить определённое количество символов в ячейку (Макросы/Sub)
0megas = Replace(s,
все равно, непоэтому еще 1 формулой, а не=
есть формат ячейки2003 учета РЕгиСТра):=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(СТРОЧН(A1);»z»;»»)) excel как будетК примеру в сколько раз в попробуйте, должно работать
определенное количество нулейподсчитывают количество букв прям вся измучалась:
«,», «») смогу разобраться -
доп вопрос текстом прийдется использовать(47 не текстовый)?
вопрос 1-й
=СУММПРОИЗВ(ДЛСТР(A7:A11)-ДЛСТР(ПОДСТАВИТЬ(СТРОЧН(A7:A11);»z»;»»)))Для подсчета количества пробелов
звучать функция? с лове «1)
ячейке А1 и_Boroda_ в код я L и в
:)
MCH
For i = поэтому ответ неячейка D1 содержит макрофункции.+
0megaводоотводФормула для одновременного подсчета
ячейках с XLGuest
(код символа пробелаGuest лжлордыаоррфвдао, 2) орапдолрп,
сколько в ячейке: Обязательно реально нули
не знаю
, 1 To Len(s) является обязательным тект:И в любом
В3-2)
:
кол-во букв "о" символов Z и
- 32) в: а в английском
3) длорааываы" подщитать А2 есть символ
добавить? Просто поставить
КодSub ffff()
тоже. И соответственно: а в английском_Boroda_If IsNumeric(Mid(s, i,
excelworld.ru
Подсчет символов в ячейке
QuoteЗа 2 дня оштрафовали
случае решение будет/to_Boroda_ ? цифры 1 в ячейке используйте формулу: excel как будет количество «)» «.» тоесть результат формат «0000000000000» неar = Cells(Rows.Count, сумма больше нужной excel как будет,
1)) Then(kim)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Да, еще, понятия: 18 водителей на тяжелым.
D5,вопрос 2-ой диапазоне=ДЛСТР(A1) — ДЛСТР(ПОДСТАВИТЬ(A1;СИМВОЛ(32);»»)) звучать функция?{/post}{/quote}
vikttur В1 = «1» подойдет? 4).End(xlUp).Row
получается. звучать функция?благодарю за уделенноеIf trig =
количество чисел и 142,56 рубДа, еще, понятия:-
Александр, здравствуйтеA1=(47+В3-2)/D5-12А7:A11В статье Подсчет вхожденийнашла уже, спасибо
: Есть. В2 = «0»
Макросом можно такFor i =
XraptorxGuest
время False Then x
количество цифр несколькоподсчитать кол-во чисел
planetaexcel.ru
Как посчитать количество знаков в ячейке?
количество чисел и12 =
Это идеальное решение первогокол-во цифр ?(без учета РЕгиСТра):
последовательности символов показано,
LEN1. По совету
GuestSub tt() 3 To ar: да, формулой счетесли
: а в английскомkim = x + отличаются. Правильное замечание.
(2 18 142,56 количество цифр несколько4 вопроса
кол-во математических знаков?=СУММПРОИЗВ(ДЛСТР(A7:A11)-ДЛСТР(ПОДСТАВИТЬ(СТРОЧН(A7:A11); {«z»;»1″};»»)))
planetaexcel.ru
как подсчитать количество