Подсчет количества чисел в таблице

Автор Alsagar, 30 января 2012, 21:48

0 Пользователи и 1 гость просматривают эту тему.

Alsagar

Здравствуйте!Подскажите, есть необходимость подсчитать количество ЧИСЕЛ  в строках,ячейках,столбцах
Пример....

А1 значение ячейки 12,25,56,78
А2 значение ячейки 3,5,6
В1 значение ячейки 0,3,5,78
В2 значение ячейки 3,5
Посчитать "количество чисел в" А1,В1=4+4=8
Посчитать "количество чисел в" А1,В1,В2=4+4+2=10
Как это осуществить,если можно без макросов.....

JohnSUN

Добро пожаловать на форум!
Можно и без макросов.
Формула получится не очень простой, но результат вернуть должна правильный.
Фокус заключается в том, что подсчитывать нужно не числа, а запятые. Например, формула =LEN(A1)-LEN(SUBSTITUTE(A1;",";""))+1 из общей долины строки в ячейке A1 вычитает длину той же строки с "вычеркнутыми" запятыми и увеличивает значение на единичку. Получаем 4 - количество чисел, разделенных запятыми.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alsagar

все это хорошо,но иногда пользователь ошибается и записывает символы через две запятые Пример 45,34,5,,6,7 и хуже всего что почти всегда после последнего числа в ячейке оставляет тоже запятую Пример 3,4,5,3,4,
Заставить пользователя следить за правильным оформлением  фактически не реально....(хотя наверное нужно)
Других вариантов нет?

JohnSUN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alsagar

ЦитироватьЕсть. Но это уже с макросом
:-[
Подскажите как,если можно подробно,просто в этом софте я с макросами не работал.....

JohnSUN

А в каком работал? В Excel? Тогда всё то же самое.
Alt+F11 - окно управления макросами
Создать модуль, задать ему имя
Откроется редактор макросов с заготовкой процедуры Main
Вместо неё записываешь функцию:
Function COUNT_NUMBER(StrToCount As String, Optional delimit As String)
Dim arr ' Временный массив строк
Dim i% ' Переменная цикла
Dim res&
If IsMissing(delimit) Then delimit = "," ' Если разделитель не указан, считать его запятой
REM Если анализируемая строка пустая - возвращаем 0
COUNT_NUMBER = 0
If (Len(StrToCount) = 0) OR StrToCount = "0" Then Exit Function
res = 0
arr = Split(StrToCount, delimit) ' Разваливаем проверяемую строку в массив строк по указанному разделителю
For i = LBound(arr) To UBound(arr) ' Проверяем каждую получившуюся стоку
If (Len(Trim(arr(i)))>0) Then res = res + 1 ' и подсчитываем количество не пустых строк
Next i
COUNT_NUMBER = res ' Возвращаем результат
End Function

Возвращаешься в книгу, в свободной ячейке пишешь
=COUNT_NUMBER(A1)+COUNT_NUMBER(B1)+COUNT_NUMBER(B2)
Жмешь Enter и получаешь 10
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alsagar


Alsagar

Все заработало.Огромное спасибо!!!!!
Простите за навязчивость ......а как сделать чтоб 0 считался тоже как одна цифра?

Рыбка Рио

Цитата: Alsagar от 30 января 2012, 23:07а как сделать чтоб 0 считался тоже как одна цифра?
Отредактировать строчку:
ЦитироватьIf (Len(StrToCount) = 0) OR StrToCount = "0" Then Exit Function   
ubuntu 12.04 + LibO3.6.0

VlhOwn

Вот оно нет времени на создание примера, но идею расскажу, как сделать без макросов:
В соседней ячейке получаем - с помощью регулярных выражений - строку, очищенную от начальных, завершающих и двойных запятых, в следующей - с их же помощью - уже одни запятые без чисел, и наконец, в последней - длину (количество запятых) предыдущей ячейки+1.

JohnSUN

Цитата: VlhOwn от 31 января 2012, 14:41
...в последней - длину (количество запятых) предыдущей ячейки+1.
...при условии, что первоначальная ячейка не была пустой.

Если честно, эта тема мне напомнила старый баян, смешной и грустный одновременно.

Задачу мы, конечно, в общих чертах решили. Теперь, пожалуй, самое время уточнить, а какую, собственно, задачу мы решали?
Почему числа вводятся в одну ячейку? Почему разделитель запятая, а не, скажем, пробел? 3,5 в B2 это числа 3 и 5 или число "три с половиной"?
Что это за числа, раз уж простой ноль - тоже число?
Повторяются ли числа в строке или должны быть уникальными? В примерах повторяются, но это ведь только примеры.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alsagar

Спасибо за советы....буду пробовать.....
ЦитироватьЗадачу мы, конечно, в общих чертах решили. Теперь, пожалуй, самое время уточнить, а какую, собственно, задачу мы решали?
уточняю.....есть рабочее место,на котором сидит оператор (моя жена),есть около 20 исполнительных устройств,сработку которых раньше отмечали по часово в пролинованной тетрадке.......кто то особо умный решил что будет проще на компе,при чем если раньше ставили в тетрадке просто черточку,например что сработал механизм например с 10.00 до 11.00 четыре раза,и так в течение суток.....то теперь ставится в  ячейке минуты через запятую,в строке с 10.00-11.00 типа срабатывал в 0,4,34,55,59  подразумевая минуты,ноль означает что сработал ровно в 10.00 и так далее.....кроме этого в течение смены нужно еще и посчитать количество сработок по каждому механизму за каждый час и за сутки, а вот времени на это не всегда хватает,настаивать на изменение ведения делопроизводства не могу,за разделительный знак молчу тоже,так как у них только мышка,и мини клава(юсб NUMpad).С ихним админом договорился что он подкинет переделанную таблицу,сам менять он не будет так как админ он только на бумаге и с его слов ни чего не понимает в таблицах....вот желание помочь жене и сподвигло на написание этого поста,так как простого решения в хелпе не нашел..........я электронщик,а не программист.........под форточками игрался с таблицами лет десять назад.....многое забылось,еще больше не зналось............

ЦитироватьПовторяются ли числа в строке или должны быть уникальными?
думаю что выше понятно написал....

JohnSUN

#12
Блин, Alsagar, что ж ты раньше не сказал! Эта задачка гораздо вкуснее первоначальной!

Давай уточним:
Мышь есть, OpenOffice.org установлен.
Устройств что-то около 20 (кнопки на форме с названиями или номерами устройств, четыре ряда по пять штук).
Нажатие на кнопку фиксирует дату-время сработки указанного устройства.
Данные накапливаются за сутки.
Нужна статистика за произвольный интервал времени (час, смена, сутки, неделя и т.п.)
Желательно в виде красивого цветного графика (чтобы всем нос утереть)

Я всё верно изложил?

Еще одно уточнение: супруга занимается только этим? Или попутно еще что-то делает на компьютере и должна будет переключаться в окошко регистрации из других программ?

PS. С этим зверем - юсб NUMpad - никогда вживую не сталкивался, только на фотках видел пару раз. Там сколько кнопок? Меньше 20?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alsagar

ЦитироватьДавай уточним:
Все намного хуже и проще........тем более график там ни кому не нужен.....
Имеем 22 cтолбца,с наименованием приборов П1,П2 и т.д до П22
и 24 строки с значениями 00:00-01:00;01:00-02:00 и т.д в итоге сутки....
К примеру прибор П12 сработал в период с 05:00 до 06:00 5 раз,оператор записывает в ячейки по пересечению строки и столбца время в формате 0,12,24,33,56......вот количество сработок и нужно посчитать по каждому столбцу за сутки
вот картинка к примеру

После прошествии суток таблица распечатывается ,далее на стол технологу,и подкалывается
в учетную папку.....что бы потом нормировщик ВРУЧНУЮ!!!! посчитал кол сработок каждого прибора,для того чтоб знать когда его заменить.........

Alsagar

#14
ЦитироватьС этим зверем - юсб NUMpad - никогда вживую не сталкивался
17 функциональных клавиш+8 специальных "горячих",типа калькулятор,громкость +-,mute и т.д....



попробовал сегодня с редактированием строчки отвечающей за ноль,тоже нюанс теперь же пустая строка тоже считается за цифру,как это можно обойти?