Страницы: 1
RSS
Как корректно посчитать число символов (1, 10, 11) в диапазоне
 
Доброго времени суток!  
 
Проблема в том, что в диапазоне ячеек есть следующие варианты значений (это номера семестров в университете):  
1  
1, 2  
10  
11  
10, 11  
 
Подскажите как правильно посчитать ОТДЕЛЬНО количество цифр: 1, 10, 11.    
Пользуюсь формулой, которая помогает только для чисел от 0 до 9.  
=СУММ(ДЛСТР(А1:А10)-ДЛСТР(ПОДСТАВИТЬ(А1:А10;"1";"")))  
 
Для цифры 10 или 11 в таком виде она не подходит.  
 
Буду рад если подправите формулу.  
 
Заранее спасибо.
Если не можешь победить беспорядок, то надо возглавить его.
 
{quote}{login=haster}{date=21.05.2012 01:11}{thema=Как корректно посчитать число символов (1, 10, 11) в диапазоне}{post}правильно посчитать ОТДЕЛЬНО количество цифр: 1, 10, 11{/post}{/quote}  
нет таких цифр - 10 и 11.  
это числа.  
 
по примеру в посте - какой результат для 1 Вы считаете правильным - 8 или 2?
 
"1" - один символ. И при удалении из текста считается как один символ.  
"125" - три символа, и при удалении текст уменьшается на 3 символа...  
 
Результат нужно разделить на... Что?  
 
Но, похоже, методика неправильна. Ведь 11 и 1,1 - разные числа, но посчитает единиц - 4.
 
Если задание не учебно-тренировочное, если не левой рукой чесать правое ухо, то сначала текст по столбам (разделитель ","), а затем =счетесли... Как вариант... ;) -78885-
 
я бы сделал с помощью такой UDF:  
 
Function ct(r As Range, Optional sd As String = " ") As String  
 Dim c As Range  
 For Each c In r: ct = ct & c.Value & sd: Next  
 ct = Left(ct, Len(ct) - Len(sd))  
End Function  
 
в любой ячейке (скажем, в A1) пишем  
=ct(<диапазон>)  
 
а потом - стандартно:  
=длстр(A1)-длстр(подставить(A1;"11";"x"))
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Нет не учебно тренировочное.  
Мне нужно посчитать сколько в учебном году например экзаменов с разбивкой по семестрам.  
Экзамен по одной дисциплине (одна ячейка со значением 1, 2) в семестре 1 и в семестре 2.    
По другой дисциплине экзамен  в 10 и 11 семестре (в ячейке стоит как 10, 11).
Если не можешь победить беспорядок, то надо возглавить его.
 
Привожу пример реального (почти) файла.  
 
Смогу ли я формулой =СУММ(ДЛСТР(M6:M20)-ДЛСТР(ПОДСТАВИТЬ(M6:M20;"1";""))) с учетом изменений в ней определить число экзаменов, или надо что то другое пробовать.
Если не можешь победить беспорядок, то надо возглавить его.
 
млин, нет, неправильный у меня вариант. :(  
проще отдельную UDF-ку написать.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Почему там 4 - я вам ответил сразу. Но почему Вы не спрашиваете о том, что в 1 семестре не 5 экзаменов, а 1?
 
Function haster(r As Range, s As String) As Integer  
 Dim c As Range  
 For Each c In r: ct = ct & c.Value & ",": Next  
 ct = Left(ct, Len(ct) - 1)  
 x = Split(ct, ",")  
 For Each sx In x  
   If s = Trim(sx) Then haster = haster + 1  
 Next  
End Function  
 
в файле.  
 
пс. там оптимизировать можно, но пока не буду - считает правильно.  
ппс. если вариант с UDF не подходит принципиально, то сразу надо было сказать. ))
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вариант и с UDF конечно подходит (огромное спасибо), но хочу разобраться с формулой.
Если не можешь победить беспорядок, то надо возглавить его.
 
Для первого семестра:  
 
=СУММ(--(ЕЧИСЛО(ПОИСК(1;M7:M20))))-СУММ(--(ЕЧИСЛО(ПОИСК(1&"?";M7:M20))))  
 
Для 10 или 11:  
 
СУММ(--(ЕЧИСЛО(ПОИСК(10;M7:M20))))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=haster}{date=21.05.2012 02:06}{thema=Re: }{post}... хочу разобраться с формулой.{/post}{/quote}  
В первом ответе я дал Вам решение (именно по тому вопросу), во втором задал вопрос... Вы не хотите отвечать. Наверное, с формулой разбираетесь?  
 
Владимир, при "1,2" не сработает.
 
В первом ответе я дал Вам решение (именно по тому вопросу), во втором задал вопрос... Вы не хотите отвечать. Наверное, с формулой разбираетесь?  
 
 
Разбираюсь параллельно с другими рабочими вопросами, в том числе и с формулами.  
Результат ни на что делить не надо.  
Но все равно спасибо за внимание, хоть и ироничное, к моим сообщениям.  
 
Значение можно сделать и с пробелом после запятой (если это
 
Потестируйте такой вариант.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, всем можно тестировать или только автору темы? :)  
поменял в C6 текст с "1, 2" на "1, 2, 10" - получил в C18 =3 (д.б. остаться =4)  
 
пс. формула выше моего понимания.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
=СЧЁТ(ПОИСК(" 1 ";" "&ПОДСТАВИТЬ(C1:C16;",";" ")&" "))  
=СЧЁТ(ПОИСК(" 10 ";" "&ПОДСТАВИТЬ(C1:C16;",";" ")&" "))  
=СЧЁТ(ПОИСК(" 11 ";" "&ПОДСТАВИТЬ(C1:C16;",";" ")&" "))  
 
<<83838>>
 
{quote}{login=}{date=21.05.2012 03:59}{thema=}{post}Результат ни на что делить не надо.{/post}{/quote}  
Вот тут вы ошибаетесь. не поняли, о чем я толковал.  
10 - два знака. Вы их заменяете на "ничего". Нашли одно значение - отняли 2 знака, нашли 2 - отняли 4, но на самом-то деле 2/2=1 и 4/2=2.  
Я предлагал для получениЯ правильного результата к Вашей формуле добавить деление:  
=формула/ДЛСТР(искомое_число)  
 
Но, еще раз: показанная Вами формула не предназначена для этой задачи.
 
Как-то так, если семестров не более 11...
 
{quote}{login=kim}{date=21.05.2012 08:15}{thema=}{post}=СЧЁТ(ПОИСК(" 1 ";" "&ПОДСТАВИТЬ(C1:C16;",";" ")&" ")){/post}{/quote})  
Обложить пробелами, - отличная мысль. Не додумался.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Большое спасибо всем кто откликнулся!  
Вопрос решен. Сэкономлено много времени.  
 
Будет пища для размышлений и дальнейшего изучения возможностей программы, так как вижу, что есть различные подходы к решению.
Страницы: 1
Читают тему
Наверх