Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2016, 10:17   #1
RolandD
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 11
По умолчанию Подсчет шагов между определенными значениями, соответствующими дубликатам.

Добрый день!

Уже сломал себе голову с одной задачей, закрадывается мысль, что средствами Excel ее решить и не удастся, поэтому прошу помощи или хотя бы ответа, что да, так оно работать не будет.

Суть проблемы: Есть столбец "Заявка", в котором указаны номера заявок, есть столбец "Статус" - соответственно номера статусов. Мне нужно подсчитать, сколько "шагов" прошло между первым появлением статуса 42, к примеру, и первым проявлением статуса 29, соответствующих одному и тому же номеру заявки. Шаги - это по сути строки, так как таблица отсортирована по номеру заявки с учетом даты.
Я попытался пойти через формулу масива, вычленяя минимальную и максимальную даты, соответствующие дубликатам, чтобы хоть временной промежуток понять, но формула масива, корректно работавшая в аналогичной задаче, тут выдает мне просто максимальную/минимальную даты во всем столбце, а не в диапазоне дубликатов.

Если подсчитать кол-во шагов там никак не получится, поправьте, пожалуйста, формулу масива, я ума не приложу. почему она не робит.
P.S. Вот и с выводом даты в отдельный столбец по условию соответствия статусу что-то приключилось, а я всего лишь убрал лишние столбцы, суть формулы там не поменялась, а она уже не работает.
Вложения
Тип файла: zip november1.zip (886.1 Кб, 15 просмотров)
RolandD вне форума Ответить с цитированием
Старый 15.12.2016, 13:07   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Не умею формул. Решал бы через макрос
Код:
Function ПосчитатьЛинии(Диапазон As Range, Заявка As Variant, ПервыйСтатус As Variant, ВторойСтатус As Variant)
' Диапазон - где исчем
' Заява - номер заявки
' ПервыйСтатус - от этого статуса
' ВторойСтатус - к этому статусу
    Dim r As Long, s As Long, ss As Long
    Dim f As Boolean
    f = False
    s = 0
    With Диапазон
        For r = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If (.Cells(r, 1) = Заявка) And (.Cells(r, 2) = ПервыйСтатус) Then
                f = True
                s = r: ss = s
            End If
            If (.Cells(r, 1) = Заявка) And (.Cells(r, 2) = ВторойСтатус) And (f) Then
                f = True
                ПосчитатьЛинии = r - s
                Exit Function
            End If
        Next r
    End With
    If ss = s Then s = 0
    ПосчитатьЛинии = s
End Function
запускал так:
Код:
=ПосчитатьЛинии(B:C;47;26;42)
как использовать неопределенное количество аргументов? ParamArray не могу прикрутить
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 15.12.2016, 19:47   #3
RolandD
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 11
По умолчанию

Логика макроса ясна, беда только в том, что там заявок десятки тысяч, по одной макросом проверять никак, увы. Остается думать, как связать формулу массива с count, это, вроде, единственный вариант.
RolandD вне форума Ответить с цитированием
Старый 15.12.2016, 23:00   #4
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

насколько я понял основную идею, задача 100% решаема и не очень сложна
уточните только, пожалуйста, по требуемой форме что надо
я приложил по картинку по заявке 1084 - по ней итоговые данные, которые вы хотите видеть не можете написать? //по заявке статусы вразнобой идут, я не совсем понимаю, что вы хотите в итоге увидеть
Изображения
Тип файла: jpg 12345.jpg (79.5 Кб, 123 просмотров)
peq вне форума Ответить с цитированием
Старый 16.12.2016, 09:31   #5
RolandD
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 11
По умолчанию

Цитата:
Сообщение от peq Посмотреть сообщение
насколько я понял основную идею, задача 100% решаема и не очень сложна
уточните только, пожалуйста, по требуемой форме что надо
я приложил по картинку по заявке 1084 - по ней итоговые данные, которые вы хотите видеть не можете написать? //по заявке статусы вразнобой идут, я не совсем понимаю, что вы хотите в итоге увидеть
Все, что тут нужно, подсчитать кол-во строк от первого появления начального статуса до первого появления итогового внутри заявки, и так в одной заявке может идти по кругу, то есть, после итогового снова будет начальный и нужно кол-во строк до следующего итогового. А вот кол-во сами итоговых статусов не важно. На примере 1084: первый раз прошло 3 шага от начального к итоговому, второй раз - 2 шага.
RolandD вне форума Ответить с цитированием
Старый 16.12.2016, 09:41   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от RolandD Посмотреть сообщение
Все, что тут нужно, подсчитать кол-во строк от первого появления начального статуса до первого появления итогового внутри заявки, и так в одной заявке может идти по кругу, то есть, после итогового снова будет начальный и нужно кол-во строк до следующего итогового. А вот кол-во сами итоговых статусов не важно. На примере 1084: первый раз прошло 3 шага от начального к итоговому, второй раз - 2 шага.
Кто понял, обясните для "особо одаренных" что надо в результате получить
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.12.2016, 09:56   #7
RolandD
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Кто понял, обясните для "особо одаренных" что надо в результате получить
Наш длииинный диапазон разбит на отрезки - одинаковые номера заявок, например отрезок в 9 строк заявки 86. На этом отрезке появляются отметки (статусы): отметка начала забега и где-то впереди отметка конца. Наша задача, подсчитать расстояние (в строках) от первой отметки начала до первой отметки конца на отрезке и повторять это, если на отрезке после отметки конца снова стоит отметка начала и так далее.
ТО есть, по сути, в столбце без дубликатов номеров заявок должно быть число, отображающее, за сколько строк в этой заявке мы добрались от начального статуса к конечному.
RolandD вне форума Ответить с цитированием
Старый 16.12.2016, 10:29   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Правильно понял, эти пары надо вычислить?
Изображения
Тип файла: jpg ATT.jpg (74.4 Кб, 125 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.12.2016, 11:26   #9
RolandD
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 11
По умолчанию


Вот так точнее, то есть, только те интевалы, которые начинаются после окончания предыдущего. А куча конечный статусов нам вообще не нужна.
RolandD вне форума Ответить с цитированием
Старый 16.12.2016, 12:49   #10
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

ок, правильно я понимаю тогда, что по заявке 5898 правильные выборки как на картинке? (пустые строки в начале выкидываем)
и вопрос тогда еще что делать с заявками типа 1109? их не учитывать(т.к. есть начало, нет конца), учитывать длиной два, или учитывать длиной три(добавлять +1 в счет конца, который не заведен в реестр, но который физически прошел)
Изображения
Тип файла: jpg 12333.jpg (81.6 Кб, 101 просмотров)
Тип файла: bmp 12322.bmp (109.4 Кб, 115 просмотров)
peq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Число между значениями sasha555 Microsoft Office Excel 0 11.04.2015 12:32
Посчитать количество ячеек с определенными значениями в двух массивах -Pavel- Microsoft Office Excel 2 10.10.2012 14:16
Подсчет количества строк с повторяющимися значениями jugelik Microsoft Office Excel 1 07.07.2011 13:14
переход между заранее определенными закладками Окоча Юра Microsoft Office Word 13 24.02.2010 23:31
сумма между определенными значениями Zeon25 Microsoft Office Excel 8 12.08.2009 08:40