Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Подсчёт событий, Количество выполнения условий по каждой дате за период отдельно.
 
Прошу помощи, ибо не нашёл такой же задачи в Форуме.
Мне по итогам месяца требуется анализировать использование автопарка. Для этого надо подсчитывать факты невыезда а/м с указанием причины. Одна из них -- не было свободного водителя.
Выходит, что из большой таблицы, куда я заношу данные из путевых листов (да ещё и не в хронологическом порядке, а по мере поступления), нужно:
1. подсчитывать задействованных водителей и а/м по каждому дню отдельно и (определять даты, когда были внесены все водители, а машины -- не все) и суммировать количество невыехавших в эти дни по этой причине машин.
2. учитывать отпуска водителей (то есть в указанный период программа не должна его "видеть" в списке, во как).
Если есть соображения, поделитесь, пожалуйста.
Спасибо.

P. S. Ещё одна неприятность состоит в том, что это должно касаться только рабочих дней месяца.
Изменено: ixioc - 04.07.2013 14:56:27
Отсортировать и из сортированного выбрать наибольшее.
 
Причину я так и не понял, но когда заменил во всех местах формулы ссылки на данный автомобиль вида СЧЁТЕСЛИ($A$1:A1;A2) и ЕСЛИ($A$1:A1=A2;СТРОКА($1:1)) на СЧЁТЕСЛИ($A$1:A4;ИСХОДНЫЕ[[#Эта строка];[А/М]] и ЕСЛИ($A$1:A4=ИСХОДНЫЕ[[#Эта строка];[А/М]], всё стало работать корректно.
При копировании ячеек относительные ссылки обновляются, как известно, корректно, а при сортировке -- оказывается -- возникает вот такая странность.
Если есть желание прокомментировать эту ситуацию, прошу высказываться сюда.
Спасибо.
Изменено: ixioc - 01.07.2013 17:14:51
Сортировка разрушает данные, формулы, устойчивые к сортировке
 
Причину я так и не понял, но когда заменил во всех местах формулы ссылки на данный автомобиль вида СЧЁТЕСЛИ($A$1:A1;A2) и ЕСЛИ($A$1:A1=A2;СТРОКА($1:1)) на СЧЁТЕСЛИ($A$1:A4;ИСХОДНЫЕ[[#Эта строка];[А/М]]) и ЕСЛИ($A$1:A4=ИСХОДНЫЕ[[#Эта строка];[А/М]], всё стало работать корректно.
Быстрее сделать, чем понять, иногда.
Отсортировать и из сортированного выбрать наибольшее.
 
А почему при попытке сортировки таблицы (по датам, например) возникают ошибки :o (в столбце "ОСТАТОК" -- значения -- вообще не реалистичные получаются)? Как этого избежать? Формула при сортировке-то ведь не изменяется...
Изменено: ixioc - 01.07.2013 16:34:29
Сортировка разрушает данные, формулы, устойчивые к сортировке
 
Вроде бы да, но это же лишит меня возможности оперативно работать со своей таблицей. Ведь, чтобы в дальнейшем пользоваться ею, мне нужно будет все формулы вернуть на место, разве не так?
Возможно, есть способ сразу заполнять требующиеся мне ячейки значениями получающихся результатов, а не формулами?
Либо (ещё лучше) чтобы я вводил свои данные в какой-либо форме, а таблица сразу вставляла их в нужном порядке, с возможностью открыть и просмотреть данные по водителям, либо по датам, либо по пассажирам и т. д.
Изменено: ixioc - 01.07.2013 16:13:34
Сортировка разрушает данные, формулы, устойчивые к сортировке
 
Прошу помочь исправить и вернуть мне возможность сортировки.

В таблицу вводятся данные о работе транспорта в таком порядке, в каком поступают.
Когда я ввожу название автомобиля, формула ищет его предидущий спидометр (максимальный для данного автомобиля) и остаток топлива в баке на предидущую его рабочую дату (максимальную дату), заполняя мне столбцы "ВЧЕРА" и "БЕНЗИН".
Когда я вношу показания спидометра на сегодня, формула считает его пробег, расход и остаток топлива на сегодня, заполняя соответствующие столбцы "ПРОБЕГ", "РАСХОД", "ОСТАТОК".
Не получается вот что: когда я сортирую эту таблицу (по датам, по автомобилям, по фамилиям водителей, да мало ли ещё по какому критерию!) в столбцах "ПРОБЕГ", "РАСХОД", "ОСТАТОК" возникают сообщения об ошибках, либо неправильные данные.
Пожалуйста, посоветуйте мне, как улучшить используемые мной формулы, чтобы они были "устойчивыми к сортировкам".
=СЧЁТЕСЛИ(все строки выше;даный автомобиль);ИНДЕКС(спидометры;МАКС(ЕСЛИ(все строки выше=данный автомобиль;СТРОКА($1:1))))
Формулу подсказали тут.
Особо злит, что я вообще не могу понять, каким образом сортировка влияет на работу формулы, почему так происходит!
Изменено: ixioc - 01.07.2013 17:16:59
Сохранение документа, Не сохраняется макрос.
 
Цитата
LVL пишет:
сли нумерация в первой строке... код сохраняется, подсвечивая синтаксическую ошибку.
Не нахожу кода, если вставляю его вместе с нумерацией.
Цитата
Юрий М пишет:
xls ВСЕГДА поддерживало макросы, а xlsx никогда. Странно, что Вы этого не ожидали))
Ну, это Вам странно. А я пока где-то информацию не прочту, пользоваться ею не умею.
P. S. А иногда и после этого тоже не умею)) Но стараюсь.
В принципе, считаю тему закрытой.
Сохранение документа, Не сохраняется макрос.
 
Спасибо, Юрий. Вопрос я задавал о том, как сохранить документ, не потеряв при этом макрос.
Ответ оказался простым: удалить нумерацию строк в коде и сохранять с поддержкой макросов. Причём обязательными оказались оба условия.

Попутно выяснилось:
1. расширение xls поддерживает макросы (доказательство -- в посте № 7), то есть отчасти более функционально, чем xlsх, чего я не ожидал.
2. Нельзя просто копипастить текст кода со страниц этого сайта, ибо там пронумерованы строки и это не позволяет макросу сохраниться и работать.

Благодарю всех участников за помощь.
Изменено: ixioc - 17.06.2013 12:50:47
Сохранение документа, Не сохраняется макрос.
 
Кажется, я нашёл ответ. Скопированный с сайта код в моём случае выглядит так:
Код
01   Private Sub Worksheet_Change(ByVal Target As Range)
02   Dim vVal
03   Dim StrVal As String
04   Dim dDate As Date
05    
06       If Target.Cells.Count > 1 Then Exit Sub
07       If Not Intersect(Target, Range("ДАТА")) Is Nothing Then
08           With Target
09           StrVal = Format(.Text, "000000")
10           If IsNumeric(StrVal) And Len(StrVal) = 6 Then
11               Application.EnableEvents = False
12               dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Right(StrVal, 2))
13               .NumberFormat = "dd/mm/yyyy"
14               .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate)))
15              End If
16           End With
17       End If
18        
19       If Not Intersect(Target, Range("ВРЕМЯ")) Is Nothing Then
20           With Target
21               vVal = Format(.Value, "0000")
22               If IsNumeric(vVal) And Len(vVal) = 4 Then
23                   Application.EnableEvents = False
24                   .Value = Left(vVal, 2) & ":" & Right(vVal, 2)
25                   .NumberFormat = "[h]:mm"
26               End If
27           End With
28        End If
29        Application.EnableEvents = True
30    
31   End Sub


А вставленный в более ранний документ, так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vVal
Dim StrVal As String
Dim dDate As Date

    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A14:A41")) Is Nothing Then
        With Target
        StrVal = Format(.Text, "000000")
        If IsNumeric(StrVal) And Len(StrVal) = 6 Then
            Application.EnableEvents = False
            dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Right(StrVal, 2))
            .NumberFormat = "dd/mm/yyyy"
            .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate)))
           End If
        End With
    End If
    
    If Not Intersect(Target, Range("D16:I506")) Is Nothing Then
        With Target
            vVal = Format(.Value, "0000")
            If IsNumeric(vVal) And Len(vVal) = 4 Then
                Application.EnableEvents = False
                .Value = Left(vVal, 2) & ":" & Right(vVal, 2)
                .NumberFormat = "[h]:mm"
            End If
        End With
     End If
     Application.EnableEvents = True

End Sub


"Найдите десять отличий!" Может быть, дело в том, что на копируемом мной тексте из ссылки в первом посте -- строки кода нумерованы? Вставил без нумерации -- работает...
Сохранение документа, Не сохраняется макрос.
 
Что значит "не бывает"? Файлы-то -- приложены.
Признаю, недоглядел. Старый файл -- xls.
Но это никак не объясняет, куда подевался макрос в документе из поста № 3.
Сохранение документа, Не сохраняется макрос.
 
Цитата
LVL пишет:
А где собственно код макроса?
Вот в этом-то и состоит суть моего вопроса: куда девается код макроса? Почему в старом документе из поста № 7 он сохряняется, а в новых, требующихся мне документах из постов № 1 и № 3 -- нет.
А текст кода взят с сайта.
Изменено: ixioc - 17.06.2013 12:32:02
Сохранение документа, Не сохраняется макрос.
 
Спасибо за Ваш ответ, но для меня всё же остаётся непостижимым:
1. Такая же история и с *.xlsm (приложил в посте №2)-- не сохраняет.
2. Предидущая версия этого документа, которую я использовал ранее, сохранена как *.xlsx и -- работает.
Прилагаю.
Сохранение документа, Не сохраняется макрос.
 
Прилагаю.
Сохранение документа, Не сохраняется макрос.
 
Более того, я создавал этот документ дома, при помощи Ексель-2013, там такая проблема тоже была, но при сохранении документа, программа подсказывала мне, что проект VB невозможно сохранить иначе, как в формате с поддержкой макросов, там я сохранил этот документ как *.xlsm, затем открыл его и сохранил как *.xlsх и всё продолжало работать.
Отправил этот документ себе на работу почтой, откріваю тут при помощи Ексель-2007 и макроса нет, нужная функция не работает и сохранить её никак не выходит.
Вот такая странность...
Сохранение документа, Не сохраняется макрос.
 
Давно пользовался приёмом с этого сайта сокращенный ввод времени и даты в документе, с которым я постоянно работаю. Назрела необходимость создать другой подобный документ, в котором также эта функция могла бы здорово облегчить мне жизнь, но не тут то было...
Вставляю текст в исходный код, прописываю свои диапазоны, сохраняю и... ничего не работает. Открываю снова исходный код, а там -- пусто.
Защита от макросов -- отключена, сохранять документ с поддержкой макросов -- пробовал.
В чём может быть проблема?
Отсортировать и из сортированного выбрать наибольшее.
 
Заработало, когда заметил вот эту фразу: "В J2, формула массива". Вставил, как массив, и всё пошло  :D .
Правда, к сожалению, не понял, в чём тут дело...
Ещё раз благодарю за помощь.
Отсортировать и из сортированного выбрать наибольшее.
 
СЧЁТЕСЛИ($A$1:A1;A2) -- проверяет вводимую мной запись на уникальность.
Если уже встречалась, то выбирает из диапазона спидометров строку -- ИНДЕКС($L$1:L1;с максимальным значением МАКС(ЕСЛИ($A$1:A1=A2;СТРОКА($1:1)))) из верхней части диапазона при условии... (ЕСЛИ($A$1:A1=A2;СТРОКА($1:1)))... вот смысл условия до меня не доходит. И где-то тут есть ошибка.
Отсортировать и из сортированного выбрать наибольшее.
 
Спасибо, vikttur и Юрий М, я исправлюсь.
Как и в обсуждаемом нами предмете, сослаться на пост можно разными путями. Предложенный Вами, Юрий М, -- проще, признаю. Да и пункт 4.2 правил, действительно, не рекомендует применять цитирование чрезмерно.
но остаётся открытым заданный мной вопрос, как отладить формулу viktturа. Есть предложения?
Отсортировать и из сортированного выбрать наибольшее.
 
Как найти ошибку в предложенной Вами формуле? Если есть время.
Спасибо.
Изменено: ixioc - 01.07.2013 17:18:13
Отсортировать и из сортированного выбрать наибольшее.
 
Результаты обнадёживают). Формула действительно ничего не возвращает при первом появлении каждой машины, а при повторных -- пытается что-то сделать, но получается #ЗНАЧ
Отсортировать и из сортированного выбрать наибольшее.
 
За ссылку на описание формул массива -- отдельное спасибо (иду учить матчасть  :)  )
Отсортировать и из сортированного выбрать наибольшее.
 
Спасибо!
То, что я хочу увидеть -- приложил к этому сообщению.

Мне понравилась Ваша формула, но она возвращает сегодняшнее значение, которое я и так вношу от руки.
А мне нужно, чтобы, когда я вношу название а/м (столбец "А"), то в столбце "J" появлялось значение из столбца "L", на той строке, когда последний раз встречался этот а/м.
То есть, как бы НАИБОЛЬШИЙ(L:L; 2), но не из всего столбца, а только тех его значений, которые соответствуют критерию из этой же строки по первому столбцу.
Помогите, если возможно.

Прим. вставить Вашу формулу как формулу массива -- не смог... пишет, что "в таблицах нельзя использовать формулы для массивов с несколькими ячейками"...
Отсортировать и из сортированного выбрать наибольшее.
 
Помогите, пожалуйста.
Знаю, что вопрос -- простой, но найти решение не могу.
Ежедневно вношу в таблицу данные спидометров десяти а/м. Как добиться, чтобы в соседнем столбце с сегодняшними показаниями, возвращались показания этого же а/м за его предидущий рабочий день? То есть, из всех показаний за период выбирались относящиеся к данному а/м и из них -- наибольшее?
(Мне это нужно для получения ежедневного пробега, чтобы в сводке на другом листе указывался расход каждого а/м ежедневно).
Пример -- прилагаю (на листе "ВНОСИМЫЕ!", диапазон отбора -- столбец "К", условие отбора -- столбец "А" ;) .
Благодарю за любые подсказки.
Подстановка из разных столбцов под одну сортировку, Не получается сводка
 
Уже я понял, что помогает мне сводная таблица. В прикреплённом примере она -- на "ЛИСТ1". Однако, в моих вносимых данных нет расхода и пробега, есть только значения спидометра при возвращении в гараж...
Задача теперь поворачивается иначе: я могу во вносимых данных добавить нужные столбцы ("спидометр при выезде" и "расход" (норма_расхода*пробег), но как сделать, чтобы, когда я создаю новую строку для какого-либо автомобиля (мне сдали путёвку), в этот новый столбец подставлялись данные спидометра из предыдущего раза, когда этот автомобиль вносился (данные спидометра при предыдущем возвращении именно этого автомобиля в гараж)?
Подстановка из разных столбцов под одну сортировку, Не получается сводка
 
Пример приклепляю.
Задача такая: из исходных данных на листе "ВНОСИМЫЕ" нужно получать ежедневно обновлённую таблицу на листе "СВОДКА".
Проблема состоит в том, что в требуемой сводке расход каждого автомобиля должен подсталяться в ячейку с той датой, в которой он ездил, то есть должна иметь место сортировка по дате И по автомобилю. Но даты нужно получать также из "ВНОСИМЫЕ".
Прошу подсказки или ссылки на то, что тут применить.
Спасибо.
Страницы: 1
Наверх