[ Регистрация · Вход · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: irakitin2014 
Форум » Excel » Формулы » по номеру автомобиля и дате найти кто сидел за рулём
по номеру автомобиля и дате найти кто сидел за рулём
interiorsolutionsДата: Пятница, 22.07.2016, 19:35 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Здравствуйте. У мне поставлена задача, по дате нарушения смотреть, какой водитель сидел на автомобиле. Есть две таблицы в одной нарушения. В другой список водителей за 5 суток кто был за рулём. Нужно по номеру автомобиля и дате найти кто сидел за рулём. Задачу я решил, но уж оооочень длинная получилась формула. Интересно узнать, есть ли какой то более красивый вариант решения этой задачи. И у меня не получилось добавить мою формулу в макрос что бы она автоматически добавлялась в столбец G. Файл с моим решением прилагаю. Столбец с формулой выделил жёлтым.
Прикрепления: 20160616_.xlsx(18Kb)


Сообщение отредактировал interiorsolutions - Пятница, 22.07.2016, 19:41
 
irakitin2014Дата: Понедельник, 25.07.2016, 07:46 | Сообщение # 2
Полковник
Группа: Модераторы
Сообщений: 119
Репутация: 4
Статус: Offline
Добрый день. Проверяйте формулу. не массивная, не требует сортировки, довольно быстрая 
Код
=ПРОСМОТР(1;1/(($D2>=ahistory_our!$D$2:$D$22)*($D2<=ahistory_our!$E$2:$E$22)*(ПРОПИСН(A2)=ahistory_our!$A$2:$A$22));ahistory_our!$B$2:$B$22)
Прикрепления: 112233.xlsx(19Kb)



для спасибов ЯД 41001877306852
 
interiorsolutionsДата: Понедельник, 25.07.2016, 18:11 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
irakitin2014, спасибо за формулу. Проверил. Работает.
1. Хочется понять её механику. Можете пояснить?
2. Как сделать что бы моя либо Ваша формула вставлялась через макрос в нужную ячейку?


Сообщение отредактировал interiorsolutions - Понедельник, 25.07.2016, 18:12
 
irakitin2014Дата: Вторник, 26.07.2016, 09:04 | Сообщение # 4
Полковник
Группа: Модераторы
Сообщений: 119
Репутация: 4
Статус: Offline
а вы попробуйте выделить непонятную часть формулы и нажмите F9. Эта волшебная клавиша вам покажет , что делает та или иная часть формулы. а что непонятно я вам объясню.
по второму вопрсу непонятно: что значит
Цитата interiorsolutions ()
Ваша формула вставлялась через макрос в нужную ячейку
 а просто протянуть не судьба?



для спасибов ЯД 41001877306852
 
interiorsolutionsДата: Вторник, 26.07.2016, 11:26 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
Цитата irakitin2014 ()
а просто протянуть не судьба?
В идеале мне нужно, чтобы при запуске макроса формула вставлялась в столбец водитель, начиная с ячейки G2 и заканчивая ячейкой GX, где X нижняя строка имеющихся на листе данных.
Протянуть, в принципе, тоже подойдёт.
Задача будет передаваться сотрудникам с разным уровнем знания компьютера. Нужно максимально упростить добавление формулы. Это делается для того что бы формулу не копировать с другого листа. 
Интересует код который я могу добавить в макрос. При записи макроса с моей формулой, его воспроизведение выдаёт ошибку. Формула в макросе переписана на RC формат. Может быть из за этого?

Про F9 спасибо. Пробую...
 
irakitin2014Дата: Вторник, 26.07.2016, 14:48 | Сообщение # 6
Полковник
Группа: Модераторы
Сообщений: 119
Репутация: 4
Статус: Offline
ну раз хотите макрос, то пожалуйста. Сразу предупреждаю: за макросы я только учусь

Код
Sub Cell()
    Dim lLastRow As Long
    Sheets("Нарушения (Город)").Range("G2").FormulaLocal = "=ПРОСМОТР(1;1/(($D2>=ahistory_our!$D$2:$D$22)*($D2<=ahistory_our!$E$2:$E$22)*(ПРОПИСН(A2)=ahistory_our!$A$2:$A$22));ahistory_our!$B$2:$B$22)"
    Range("G2").Select
    Selection.Copy
    Range("G3:G" & Cells(Rows.Count, 4).End(xlUp).Row).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

макрос повесил на кнопку на листе нарушения
Прикрепления: 9379046.xlsm(28Kb)



для спасибов ЯД 41001877306852


Сообщение отредактировал irakitin2014 - Вторник, 26.07.2016, 14:49
 
irakitin2014Дата: Вторник, 26.07.2016, 15:42 | Сообщение # 7
Полковник
Группа: Модераторы
Сообщений: 119
Репутация: 4
Статус: Offline
немного подкрасил макрос. теперь сохраняются только значения. сама формула находится в теле макроса.так что никто ее не увидит. Правда, что бы изменить диапазоны на втором листе надо менять диапазоны в макросе. я там изменил на 1000 строчек.надо будет больше: все 1000 в макросе поменяйте на нужную цифру
Код
Sub Cell()
    Dim lLastRow As Long
    Sheets("Нарушения (Город)").Range("G2").FormulaLocal = "=ПРОСМОТР(1;1/(($D2>=ahistory_our!$D$2:$D$1000)*($D2<=ahistory_our!$E$2:$E$1000)*(ПРОПИСН(A2)=ahistory_our!$A$2:$A$1000));ahistory_our!$B$2:$B$1000)"
    Range("G2").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("G2:G" & Cells(Rows.Count, 4).End(xlUp).Row), Type:=xlFillDefault
    Range("G2:G" & Cells(Rows.Count, 4).End(xlUp).Row).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
End Sub

Прикрепления: __2.xlsm(28Kb)



для спасибов ЯД 41001877306852
 
interiorsolutionsДата: Пятница, 29.07.2016, 12:41 | Сообщение # 8
Рядовой
Группа: Проверенные
Сообщений: 6
Репутация: 0
Статус: Offline
irakitin2014, Спасибо. Работает. Внедряю.
 
Форум » Excel » Формулы » по номеру автомобиля и дате найти кто сидел за рулём
Страница 1 из 11
Поиск: