Страницы: 1
RSS
Автозаполнение путевовго листа при наличии нескольких операций за день
 
Добрый день.
Задача сделать так, чтобы данные для путевого листа (далее ПЛ) подтягивались из таблицы на листе "Журнал о"  в бланк ПЛ автоматически при выборе номера ПЛ на листе ПЛ в ячейке СН1.
Уже обращалась с такой задачей недавно, и мне быстро ответили, спасибо. Решением была функция ВПР и она помогла в некоторых случаях.
Но что делать, если операций за день было несколько, например путевой лист № 1-2, их там 4!
Как сделать так, чтобы отображались все операции за день по каждому путевому листу?
Необходимые формулы  должны быть на листе ПЛ в ячейках с красным текстом, который указывает на название стобцов от куда нужно брать данные.
В случае отсутствия данных в нужных столбцах в таблице "Журнал о" необходимо выводить пустую ячейку.
 
Цитата
что делать, если операций за день было несколько, например путевой лист № 1-2, их там 4!
Макрос в модуль листа ПЛ, при изменении ячейки CH1 будут меняться данные. Только в макросе пропишите все диапазоны для очистки и строки для переноса,
а также на листе выберите нужный формат ячеек
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("CH1")) Is Nothing Then
    Application.EnableEvents = False
Dim iLastRow As Long
Dim FoundCell As Range
Dim FAdr As String
   Range("A29:H35,I29:P35,Q29:X35").ClearContents        'прописать все диапазоны
 With Worksheets("Журнал о")
    Set FoundCell = .Columns(2).Find(Target, , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
      FAdr = FoundCell.Address
      iLastRow = 29
      Do
       Cells(iLastRow, "I") = .Cells(FoundCell.Row, "W") 'время прибытия
       Cells(iLastRow, "Q") = .Cells(FoundCell.Row, "Y") 'время выбытия
       'остальные строки аналогично
       Set FoundCell = .Columns(2).FindNext(FoundCell)
         iLastRow = iLastRow + 1
         If iLastRow > 35 Then Exit Do
      Loop While FoundCell.Address <> FAdr
     End If
 End With
  End If
    Application.EnableEvents = True
End Sub
 
Цитата
Kuzmich написал:
Только в макросе пропишите все диапазоны для очистки и строки для переноса,
Простите, не понимаю как это делать(
 
samanna, У вас на листе ПЛ в строках 29:35 объединенные ячейки, я в макросе прописал только три из них
Код
Range("A29:H35,I29:P35,Q29:X35").ClearContents        'прописать все диапазоны
пропишите остальные через запятую аналогично . Ячейка А29 занимает столбцы от А до Н, я пишу диапазон A29:H35 и т.д.
 
Kuzmich, прописала. Вроде вставила.
При нажатии Alt F8 выскакивает окно, в котором нет ни одного назавания макроса. Что я делаю не так?
 
Данный макрос срабатывает не вызовом через Alt-F8, а при событии
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Вы правильно его вставили в лист "ПЛ", только чтоб увидеть работу, нужно, чтобы событие изменения на листе сработало. Но, обратите внимание на строку
Код
If Not Intersect(Target, Range("CH1")) Is Nothing Then
это говорит о том, что далее (до соответствующего End If) макрос буде исполняться ТОЛЬКО когда изменена ячейка CH1. Попробуйте ее изменить и посмотрите, что получится в диапазоне начиная от 29 строки.
 
Цитата
Что я делаю не так?
В стандартный модуль макрос не надо было прописывать, только в модуль листа ПЛ.
Я писал вам, что при изменении ячейки CH1 будут меняться данные, а также на листе выберите нужный формат ячеек
Изменено: Kuzmich - 02.09.2018 22:34:25
 
Kuzmich, урааааааааааа! Работает!!! Спасибо Вам огромное!
Только время выбытия (столбец Q, лист ПЛ) иногда выдает #ЗНАЧ. Как это можно устранить? Я так понимаю, это из-за того, что в столбце Y (Журнал о) плюсуется пустая ячейка...
 
Цитата
Как это можно устранить?
В журнале в столбце Х пустые ячейки заменить на 0
 
Kuzmich, спасибо, вышло!)
Еще вопрос. Если вставляю этот макрос в свой реальный файл, выдает ошибку в строке
Код
With Worksheets("Журнал о")
Название листа отличается. Исправляю его, но это не помогает. Что нужно сделать, чтоб макрос заработал в другой книге?
 
Неправильно исправляете. Проверьте название листа
 
Буква "о" русская?
 
vikttur, фух, вышло! Спасибо!)
 
samanna, Напоминаю, что слово "откуда" это одно слово. Никаких "от куда" не существует. В нормальных условиях автомобиль выезжает "из гаража", а вот если он съезжает с его крыши, то тогда будет как у Вас "с гаража". Ну и растение называется "крАпива", а никак не "крОпива".
Дикая безграмотность режет глаз хуже едкого дыма.
 
Мартын, ОТКУДА у Вас столько злости?
Это ведь не форум помощи в правописании, правда?
Я перевожу слова с украинского языка, и могу иногда ошибаться.
Надеюсь Ваши глаза не сильно пострадали от моих сообщений.
Всего доброго!
Изменено: samanna - 08.09.2018 22:12:21
 
Цитата
samanna написал:
Это ведь не форум помощи в правописании, правда?
Правда. Но всё же старайтесь писать грамотно: на самом деле бросается в глаза.
 
Юрий М, хорошо, буду стараться.
Кто-то реально очень помогает здесь, Вы в том числе, а кто-то отчитывает за ошибки... Неприятно((
Страницы: 1
Наверх