Страницы: 1 2 След.
RSS
Текст из фрагментов "время;значение", Посчитать количество значений в промежутоки времени
 
Привет всем. Помогите решить эту головоломку, Нужно распространить функцию СЧЕТЕСЛИ на значения в ячейке. Проблема в том что функция выбирает только первое значение, остальные не учитывает. Привела пример результата как это должно выглядеть. Спасибо!
 
а вас не затруднит привести описание задачи? что считаем?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, это timestamp, считаем количество значений входящих в заданный период времени, допустим ( 0,491759259261016 - 11:48:08 ), ячейка содержит значения, нужно подсчитать в какие часы дня какое количество значений
 
Код
Function CountIn(v1, v2, v)
  Dim cnt&, i&, a, t#
  a = Split(Replace(Right(v, Len(v) - 1), ",", "."), ";")
  For i = LBound(a) To UBound(a)
    t = Val(a(i))
    If t > v1 And t <= v2 Then cnt = cnt + 1
  Next
  CountIn = cnt
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,  :D :D  :D , Игорь значения берутся из I5, Если в вашей функции перевести с I9 на I5 , она работает точно также как и моя функция.... Сделайте пожалуйста чтобы ваша функция работала от ячейки I5......  I9 для примера, чтобы понятней было  
 
давайте еще раз вернемся к описанию задачи
будет описание - будет решение, а пока решайте все самостоятельно или к гадалкам, они и без обьяснения задачи угадают ответ.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, спасибо чтобы хотя бы попытались... признаю задача отнюдь не легкая... у меня тоже не получается
 
)))
задача элементарная, если знать условия задачи
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, вы все правильно поняли и сделали,  только вместо I9 countin(A2;C2;$I$9)  , нужно I5 countin(A2;C2;$I$5)... Просто не понимаю что нужно еще знать для условий задачи
 
в I5 у вас написана монструозная формула, которая из 4057 значений из ячейки I9 взяла первое = 0,491759259261016
оно попадает в диапазон с 11:00 - 12:00, что еще считать?

а если перебрать ВСЕ значения с ячейки I9, то 3-м там есть еще  0,516655092593282, которое попадает в диапазон 12:00 - 13:00 (остальное, вроде нули)
мой CjuntIn так и написал:
1 в строке 11:00 - 12:00
и
1 в строке 12:00 - 13:00
а что вы пытаетесь посчитать? что нужно посчитать? в чем суть задачи?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Алиса, не объясняйте свою формулу. Забудьте на 2 минуты о функциях. Амнезия полная! И опишите ЗАДАЧУ

Цитата
Алиса написал: распространить функцию СЧЕТЕСЛИ на значения в ячейке
Нужно что-то посчитать по условиям? Так Вы так и напишите - что и по каким условиям. А Вы пытаетесь принудить функцию к тому. чему она не обучена

В ячейке записан текст, состоящий из фрагментов "время;значение", расположенных один за другим. Нужно посчитать количество значений в промежутоки времени. Или суммировать значения... Что-то такое?
 
Ігор Гончаренко, vikttur, в ячейке I5 приведены значения, нужно каждое значение в этой ячейке сравнить - входят ли они в промежутки времени.....
пример: в этой ячейке 4057 значений - нужно узнать сколько из них входит во временной промежуток с 00:00 - 01:00; 01:00 - 02:00.... и тд.

Игорь ваше решение делает то что нужно, и спасибо вам за это, но I9 я сделала вручную (нажала на формулу потом F9 и вставила результат в ячейку I9), а нужно миновать этот шаг с F9, тоже самое что делает ваша функция только с ФОРМУЛОЙ, а не с готовыми значениями.... Надеюсь подробно описала, это вообще возможно? Или я напридумывала невозможное :D  :D  :D

вообщем нужно тоже самое что сделал Игорь, только чтобы значения брались из I5 , добавила еще ячеек в эту строки, посмотрите желаемый результат.  
Изменено: Алиса - 24.09.2020 21:12:50
 
а как вы получили "желаемые результаты" (значения в колонке Д
расскахите как они были вычислены?

с учетом, что исходные - это значения на втором листе:
С2=2366745020277102735;GraphVideo;CDYXg5vipiP;153;ЛОЖЬ;1596358088;937;750;39439;410590446;ИСТИНА;445879;%2364550321963029457;GraphImage;CDQkf1qJFPR;500;ЛОЖЬ;1596096385;1080;1080;74561;410590446;ЛОЖЬ;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
и Е2=2367487108518164323;GraphVideo;CDbAPtRirdj;1123;ЛОЖЬ;1596446639;937;750;42582;410590446;ИСТИНА;458374;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

как из  значений в С2 и Е2 получено
1 в Д12?
4 в Д13?
1 в Д14?
2 в Д19?
как вычислено?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, ну ошиблась немного перенесите значения с 3 строки на 2, зачем сразу орать  :cry:  
 
я не орал
я спрашивал "как это посчитано?"
пойму как считали вы ,смогу сосчитать сам
как?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Алиса написал:
Тема: каждое значение в ячейке сравнить - входят ли они в промежутки времени
с учетом, что в ячейке одно значение)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Алиса написал:
Или я напридумывала невозможное
да именно так. То что в этой ячейке уже не обработать.
По вопросам из тем форума, личку не читаю.
 
Ігор Гончаренко,

1) выбираю ячейку I5
2) нажимаю F9 (вижу результат), копирую результат
3) вставляю результат в I9
4) далее ваша формула считает

Хотелось бы без этих промежуточных шагов
 
давайте уберем еще один промежуточный шаг
выясним, как посчитать к какому часу (часам) относится то, что записано в ячейке С2 листа2

вот это:
2366745020277102735;GraphVideo;CDYXg5vipiP;153;ЛОЖЬ;1596358088;937;750;39439;410590446;ИСТИНА;445879;%2364550321963029457;GraphImage;CDQkf1qJFPR;500;ЛОЖЬ;1596096385;1080;1080;74561;410590446;ЛОЖЬ;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
относится к одному часу 2 раза, или к 2-м по разу?
к каким часам и по скольку раз это относится?
Изменено: Ігор Гончаренко - 24.09.2020 22:54:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
1) достаем значение - пример (1596358088)
2) подставляем в эту формулу 25569+((10800+1596358088)/86400)= 44045,4917592593 - получаем числовое значение даты и времени ( 44045,4917592593  = 02.08.2020 11:48:08)
3) убираем дату оставляем только время, 44045,4917592593 - 44045 =  0,491759259 - это время.
4) далее сравниваем это число, проходит ли оно в требуемый промежуток.
 
хорошо
а если что-то случилось ровно в 1:00 это к какому часу относится? к 0:00-1:00 или к 1:00-2:00?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, вряд ли такое случится, но если случится будем считать что относится к 01:00-02:00, тогда счет будет с 00:00 - 00:59, 01:00 - 1:59 и тд.....
 
проверяйте)
Код
Function CountIn(v)
  Dim i&, a, t#, c&(1 To 24, 1 To 1), re, ms, m
  Set re = CreateObject("VBScript.RegExp"): re.Global = True
  re.Pattern = ";(\d+);\d+;\d+;\d+;\d+;"
  If re.test(v.Value) Then
    Set ms = re.Execute(v.Value)
    For Each m In ms
      t = 25569 + (10800 + Val(m.SubMatches(0))) / 86400
      i = Int((t - Int(t)) * 24) + 1: c(i, 1) = c(i, 1) + 1
    Next
  End If
  CountIn = c
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, очень классно! спасибо! Только нужно не для одной ячейки а для всей строки (C2:AAA2) иначе в этом смысла нет :(
 
я постоянно об этом пишу: нет смысла решать задачу, если нет условий задачи
и....
это
Код
t = 25569 + (10800 + Val(m.SubMatches(0))) / 86400
можно записать так
Код
t = (10800 + Val(m.SubMatches(0))) / 86400
результат не изменится
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
OFF
Давно замечено, что девушкам у нас помогают охотнее  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Алиса написал:
1) достаем значение - пример (1596358088)
меня еще с первого поста интересует, по какому признаку мы его находим.
Изменено: БМВ - 25.09.2020 11:12:35
По вопросам из тем форума, личку не читаю.
 
Ігор Гончаренко, блин ну какие условия? Спасибо вам огромное за помощь! Это должно распространяться  на диапазон C2:AAA2 , как в формуле в изначальном примере  :sceptic: .... Уже у цели чуть чуть осталось
Изменено: Алиса - 26.09.2020 17:07:04
 
БМВ, значения с разделителями 50 строк каждая разделяется %, каждая строка в свою очередь делится на 12 значений ;
timestamp всегда 6 значением идет, то есть в каждой строке после 5-того знака ;
 
Цитата
Алиса написал:
блин ну какие условия?
Алиса, +++ !!!  С условиями и любой студент сможет задачу решить!
Цитата
Алиса написал:
Уже у цели чуть чуть осталось
Продолжайте (#26)  :)  
Страницы: 1 2 След.
Наверх