Счет значений в заданном пределе.
Ипалит
Дата: Четверг, 19.05.2016, 16:45 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте господа. Исходя из названия задача проста. Но есть но. Значений в ячейки может быть как одно так и несколько, записаны через запятую, расположены в любой последовательности, каждое значение состоит только из 3-х цифр. С пределом искомых значений тоже не все просто. Он может быть расположен последовательно например от 140-158 так и с промежутками 102,119 . Также эти два предела могут быть объедены в один 140-158,102,119
Здравствуйте господа. Исходя из названия задача проста. Но есть но. Значений в ячейки может быть как одно так и несколько, записаны через запятую, расположены в любой последовательности, каждое значение состоит только из 3-х цифр. С пределом искомых значений тоже не все просто. Он может быть расположен последовательно например от 140-158 так и с промежутками 102,119 . Также эти два предела могут быть объедены в один 140-158,102,119 Ипалит
Ответить
Сообщение Здравствуйте господа. Исходя из названия задача проста. Но есть но. Значений в ячейки может быть как одно так и несколько, записаны через запятую, расположены в любой последовательности, каждое значение состоит только из 3-х цифр. С пределом искомых значений тоже не все просто. Он может быть расположен последовательно например от 140-158 так и с промежутками 102,119 . Также эти два предела могут быть объедены в один 140-158,102,119 Автор - Ипалит Дата добавления - 19.05.2016 в 16:45
ArkaIIIa
Дата: Четверг, 19.05.2016, 17:25 |
Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Ипалит Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?
Ипалит Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?ArkaIIIa
Ответить
Сообщение Ипалит Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?Автор - ArkaIIIa Дата добавления - 19.05.2016 в 17:25
Ипалит
Дата: Четверг, 19.05.2016, 17:28 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?
Более 20 не будет
Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?
Более 20 не будетИпалит
Ответить
Сообщение Есть какой-то предел по кол-ву чисел/диапазонов? Проще говоря - запятых может быть какое-то ограниченное кол-во?
Более 20 не будетАвтор - Ипалит Дата добавления - 19.05.2016 в 17:28
pabchek
Дата: Четверг, 19.05.2016, 17:55 |
Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Здравствуйте. Мой вариант Код
=СУММ(ЕСЛИОШИБКА(ПСТР(A3;ПОИСК("-";A3)+1;3)-ПСТР(A3;ПОИСК("-";A3)-3;3);0);СУММПРОИЗВ(--(ПСТР(A3;СТРОКА(I$1:I$99);1)=",")))+1
Здравствуйте. Мой вариант Код
=СУММ(ЕСЛИОШИБКА(ПСТР(A3;ПОИСК("-";A3)+1;3)-ПСТР(A3;ПОИСК("-";A3)-3;3);0);СУММПРОИЗВ(--(ПСТР(A3;СТРОКА(I$1:I$99);1)=",")))+1
pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Сообщение отредактировал pabchek - Четверг, 19.05.2016, 18:10
Ответить
Сообщение Здравствуйте. Мой вариант Код
=СУММ(ЕСЛИОШИБКА(ПСТР(A3;ПОИСК("-";A3)+1;3)-ПСТР(A3;ПОИСК("-";A3)-3;3);0);СУММПРОИЗВ(--(ПСТР(A3;СТРОКА(I$1:I$99);1)=",")))+1
Автор - pabchek Дата добавления - 19.05.2016 в 17:55
Ипалит
Дата: Четверг, 19.05.2016, 18:39 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Наверное не правильно описал свою задачу и меня не поняли. Извиняюсь если кого ввел в заблуждение Мне необходимо подсчитать количество значений соответствующих условию. Значения могут быть как одно в ячейке так и несколько записанные через запятую, расположенные в разных оследовательностях. Условия тоже будут разные.
Наверное не правильно описал свою задачу и меня не поняли. Извиняюсь если кого ввел в заблуждение Мне необходимо подсчитать количество значений соответствующих условию. Значения могут быть как одно в ячейке так и несколько записанные через запятую, расположенные в разных оследовательностях. Условия тоже будут разные.Ипалит
Сообщение отредактировал Ипалит - Четверг, 19.05.2016, 20:13
Ответить
Сообщение Наверное не правильно описал свою задачу и меня не поняли. Извиняюсь если кого ввел в заблуждение Мне необходимо подсчитать количество значений соответствующих условию. Значения могут быть как одно в ячейке так и несколько записанные через запятую, расположенные в разных оследовательностях. Условия тоже будут разные.Автор - Ипалит Дата добавления - 19.05.2016 в 18:39
Ипалит
Дата: Четверг, 19.05.2016, 20:16 |
Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Обновляю файл. Может так понятнее будет
Обновляю файл. Может так понятнее будет Ипалит
Ответить
Сообщение Обновляю файл. Может так понятнее будет Автор - Ипалит Дата добавления - 19.05.2016 в 20:16
pabchek
Дата: Пятница, 20.05.2016, 08:35 |
Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
не правильно описал свою задачу и меня не поняли
Очень хочется поворчать
не правильно описал свою задачу и меня не поняли
Очень хочется поворчатьpabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение не правильно описал свою задачу и меня не поняли
Очень хочется поворчатьАвтор - pabchek Дата добавления - 20.05.2016 в 08:35
abtextime
Дата: Пятница, 20.05.2016, 12:14 |
Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
Смотрите, через UDF (прошу прощения у VBA-эстетов, самому противно смотреть ) [vba]Код
Public Function VPredele(RR As Range, S As String) As Integer Dim A(100 To 999) As Integer Dim B(100 To 999) As Boolean For i = 100 To 999 A(i) = 0 B(i) = False Next i For Each R In RR Zap = Len(R) - Len(Replace(R, ",", "")) SSS = Split(R.Value, ",", Zap + 1, vbBinaryCompare) For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) A(j) = A(j) + 1 Next j Else: A(SSS(i) + 0) = A(SSS(i) + 0) + 1 End If Next i Next Zap = Len(S) - Len(Replace(S, ",", "")) SSS = Split(S, ",") For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) B(j) = True Next j Else: B(SSS(i) + 0) = True End If Next i For i = 100 To 999 If B(i) Then VPredele = VPredele + A(i) Next i End Function
[/vba]
Смотрите, через UDF (прошу прощения у VBA-эстетов, самому противно смотреть ) [vba]Код
Public Function VPredele(RR As Range, S As String) As Integer Dim A(100 To 999) As Integer Dim B(100 To 999) As Boolean For i = 100 To 999 A(i) = 0 B(i) = False Next i For Each R In RR Zap = Len(R) - Len(Replace(R, ",", "")) SSS = Split(R.Value, ",", Zap + 1, vbBinaryCompare) For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) A(j) = A(j) + 1 Next j Else: A(SSS(i) + 0) = A(SSS(i) + 0) + 1 End If Next i Next Zap = Len(S) - Len(Replace(S, ",", "")) SSS = Split(S, ",") For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) B(j) = True Next j Else: B(SSS(i) + 0) = True End If Next i For i = 100 To 999 If B(i) Then VPredele = VPredele + A(i) Next i End Function
[/vba] abtextime
Ответить
Сообщение Смотрите, через UDF (прошу прощения у VBA-эстетов, самому противно смотреть ) [vba]Код
Public Function VPredele(RR As Range, S As String) As Integer Dim A(100 To 999) As Integer Dim B(100 To 999) As Boolean For i = 100 To 999 A(i) = 0 B(i) = False Next i For Each R In RR Zap = Len(R) - Len(Replace(R, ",", "")) SSS = Split(R.Value, ",", Zap + 1, vbBinaryCompare) For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) A(j) = A(j) + 1 Next j Else: A(SSS(i) + 0) = A(SSS(i) + 0) + 1 End If Next i Next Zap = Len(S) - Len(Replace(S, ",", "")) SSS = Split(S, ",") For i = 0 To Zap If Len(SSS(i)) > Len(Replace(SSS(i), "-", "")) Then SSSS = Split(SSS(i), "-") For j = (SSSS(0) + 0) To (SSSS(1) + 0) B(j) = True Next j Else: B(SSS(i) + 0) = True End If Next i For i = 100 To 999 If B(i) Then VPredele = VPredele + A(i) Next i End Function
[/vba] Автор - abtextime Дата добавления - 20.05.2016 в 12:14
krosav4ig
Дата: Пятница, 20.05.2016, 18:53 |
Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,2013
Ипалит , 140-158 это два числа 140 и 158, или все числа от 140 до 158 (нужно ли считать совпадения чисел 141, 142, 143 ... 157 ?)
Ипалит , 140-158 это два числа 140 и 158, или все числа от 140 до 158 (нужно ли считать совпадения чисел 141, 142, 143 ... 157 ?)krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение Ипалит , 140-158 это два числа 140 и 158, или все числа от 140 до 158 (нужно ли считать совпадения чисел 141, 142, 143 ... 157 ?)Автор - krosav4ig Дата добавления - 20.05.2016 в 18:53
abtextime
Дата: Пятница, 20.05.2016, 19:00 |
Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
krosav4iq Я делал, как для диапазона. В противном смысле зачем "-", если это то же самое, что и ","
krosav4iq Я делал, как для диапазона. В противном смысле зачем "-", если это то же самое, что и ","abtextime
Ответить
Сообщение krosav4iq Я делал, как для диапазона. В противном смысле зачем "-", если это то же самое, что и ","Автор - abtextime Дата добавления - 20.05.2016 в 19:00
krosav4ig
Дата: Пятница, 20.05.2016, 21:48 |
Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,2013
До кучи, "формульный" вариант (макрофункция)
До кучи, "формульный" вариант (макрофункция) krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Пятница, 20.05.2016, 21:50
Ответить
Сообщение До кучи, "формульный" вариант (макрофункция) Автор - krosav4ig Дата добавления - 20.05.2016 в 21:48
Michael_S
Дата: Суббота, 21.05.2016, 01:24 |
Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация:
373
±
Замечаний:
0% ±
Excel2016
abtextime , в вашей функции вот это блок; [vba]Код
For i = 100 To 999 A(i) = 0 B(i) = False Next i
[/vba]лишний.При инициализации массивов они и так равны нулю и False. (Правда не вредит)
abtextime , в вашей функции вот это блок; [vba]Код
For i = 100 To 999 A(i) = 0 B(i) = False Next i
[/vba]лишний.При инициализации массивов они и так равны нулю и False. (Правда не вредит)Michael_S
Ответить
Сообщение abtextime , в вашей функции вот это блок; [vba]Код
For i = 100 To 999 A(i) = 0 B(i) = False Next i
[/vba]лишний.При инициализации массивов они и так равны нулю и False. (Правда не вредит)Автор - Michael_S Дата добавления - 21.05.2016 в 01:24
abtextime
Дата: Суббота, 21.05.2016, 01:42 |
Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
Michael_S Я в курсе. Просто так нагляднее
Michael_S Я в курсе. Просто так нагляднееabtextime
Ответить
Сообщение Michael_S Я в курсе. Просто так нагляднееАвтор - abtextime Дата добавления - 21.05.2016 в 01:42