по номеру автомобиля и дате найти кто сидел за рулём
|
|
interiorsolutions | Дата: Пятница, 22.07.2016, 19:35 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Offline
| Здравствуйте. У мне поставлена задача, по дате нарушения смотреть, какой водитель сидел на автомобиле. Есть две таблицы в одной нарушения. В другой список водителей за 5 суток кто был за рулём. Нужно по номеру автомобиля и дате найти кто сидел за рулём. Задачу я решил, но уж оооочень длинная получилась формула. Интересно узнать, есть ли какой то более красивый вариант решения этой задачи. И у меня не получилось добавить мою формулу в макрос что бы она автоматически добавлялась в столбец G. Файл с моим решением прилагаю. Столбец с формулой выделил жёлтым.
Сообщение отредактировал interiorsolutions - Пятница, 22.07.2016, 19:41 |
|
| |
irakitin2014 | Дата: Понедельник, 25.07.2016, 07:46 | Сообщение # 2 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: 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)
для спасибов ЯД 41001877306852
|
|
| |
interiorsolutions | Дата: Понедельник, 25.07.2016, 18:11 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Offline
| irakitin2014, спасибо за формулу. Проверил. Работает. 1. Хочется понять её механику. Можете пояснить? 2. Как сделать что бы моя либо Ваша формула вставлялась через макрос в нужную ячейку?
Сообщение отредактировал interiorsolutions - Понедельник, 25.07.2016, 18:12 |
|
| |
irakitin2014 | Дата: Вторник, 26.07.2016, 09:04 | Сообщение # 4 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: Offline
| а вы попробуйте выделить непонятную часть формулы и нажмите F9. Эта волшебная клавиша вам покажет , что делает та или иная часть формулы. а что непонятно я вам объясню. по второму вопрсу непонятно: что значит Цитата interiorsolutions ( ) Ваша формула вставлялась через макрос в нужную ячейку а просто протянуть не судьба?
для спасибов ЯД 41001877306852
|
|
| |
interiorsolutions | Дата: Вторник, 26.07.2016, 11:26 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Offline
| Цитата irakitin2014 ( ) а просто протянуть не судьба? В идеале мне нужно, чтобы при запуске макроса формула вставлялась в столбец водитель, начиная с ячейки G2 и заканчивая ячейкой GX, где X нижняя строка имеющихся на листе данных. Протянуть, в принципе, тоже подойдёт. Задача будет передаваться сотрудникам с разным уровнем знания компьютера. Нужно максимально упростить добавление формулы. Это делается для того что бы формулу не копировать с другого листа. Интересует код который я могу добавить в макрос. При записи макроса с моей формулой, его воспроизведение выдаёт ошибку. Формула в макросе переписана на RC формат. Может быть из за этого?
Про F9 спасибо. Пробую...
|
|
| |
irakitin2014 | Дата: Вторник, 26.07.2016, 14:48 | Сообщение # 6 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: 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 макрос повесил на кнопку на листе нарушения
для спасибов ЯД 41001877306852
Сообщение отредактировал irakitin2014 - Вторник, 26.07.2016, 14:49 |
|
| |
irakitin2014 | Дата: Вторник, 26.07.2016, 15:42 | Сообщение # 7 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: 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
для спасибов ЯД 41001877306852
|
|
| |
interiorsolutions | Дата: Пятница, 29.07.2016, 12:41 | Сообщение # 8 |
Рядовой
Группа: Проверенные
Сообщений: 6
Статус: Offline
| irakitin2014, Спасибо. Работает. Внедряю.
|
|
| |
duzhkov | Дата: Четверг, 06.06.2019, 09:11 | Сообщение # 9 |
Рядовой
Группа: Проверенные
Сообщений: 8
Статус: Offline
| прикольно
|
|
| |