Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Подбор функции для заполнения шаблона

Автор x3emz, 17.10.2023, 19:07

« назад - далее »

x3emz

Добрый день!

Нуждаюсь в подсказке, в каком направление и какой формулой пробовать реализовывать свою задачу.

Есть заполненная таблица. Листы с которыми придется работать "Общие итоги" и "import".

Сейчас в файле на листе import все заполнено руками вручную. Стоит необходимость это дело автоматизировать формулой либо макросом.

На лист import в колонку "J" должны записываться ФИО сотрудников по 5 раз - одна фамилия, данные должны браться с листа "Общие итоги". Количество фамилий всегда разное. После того, как фамилии записаны, необходимо:
в колонку "D" - подставить табельный номер
в колонку "E" - подставить необходимую операцию. На одного сотрудника приходится - пять операций.

Далее, необходимо в колонке "F" подставлять в ячейки значения. Значения берутся с листа "общие итоги" и по конкретному сотруднику.

На листе "import" не должно получиться, что в колонке допустим ФИО будут значения "Н/Д" или "0". Поскольку далее этот лист выгружается в 1С и такие значения обвалят обработку на стороне 1С.

Буду рад любым конструктивным подсказкам, заранее спасибо :) 

Serge 007

Здравствуйте

См. вложение
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

x3emz

Цитата: Serge 007 от 18.10.2023, 12:20Здравствуйте

См. вложение

Добрый день! Благодарю за помощь!

Доработал свою таблицу, см вложение. 14.10.2023_Регистрация (1).xlsx
Избавился от #ССЫЛКА, ибо формулу протянул до 200 строки. В разные дни будет разное количество и постоянно протягивать формулу будет такое себе занятие...

На листе "Общие итоги" добавил колонки "Время 1" "Время 2".
На лист импорт подставляю через впр.

Сейчас есть парочку не решенных вопросов:

Если в колонке ФИО нет значений, то не подставлять операции. Какое правильно подобрать условие ЕСЛИ для формулы
=ИНДЕКС('Общие итоги'!$D$1:$H$1;ОСТАТ(СТРОКА()-2;5)+1)
Есть подозрение, что при загрузке файла в 1C обработка начнет кидать ошибки по причине того, что допустим в ячейке A102 есть формула и пустое значение, и получится, что обработка обработает колонку до A200 (до протянутой формулы) и остановится только на A201.
Соответственно размышляю, что можно придумать в этом случае. Возможно стоит пойти в направление макроса на кнопку? Допустим реализовать, что по нажатию кнопки "сохранить выгрузку" создается новый файл .xlsx с названием текущего файла, с данными с листа import, но вопрос тогда, как задать диапазон если он динамичный. Сейчас в файле это A1:J96, а завтра (другой рабочий день) это может быть с A1:J100.

Еще одна возникшая проблема, это сотрудники с одинаковыми фамилиями, но таких благо не много.
На листе "profiles" БД ФИО и табельный номер в 1С. Есть фамилия "Лихограй".
В начале рабочего дня во вкладке "регистрация" вбиваем фамилию "Лихограй", она подставляется на лист "Общие итоги" и там автоматом подставляется "лихограй екатерина", но вот как быть, если нужна "лихограй нина". Реализованное мной не работает должным образом при таком совпадение. А может оказаться, что нужна и "нина" и "екатерина"...

x3emz

Update

Решил комплексно 1 и 2 вопрос.

Макрос на кнопку
Rows(Columns(1).Find("*", , xlValues, , xlByRows, xlPrevious).Row + 1 & ":" & _
Columns(1).Find("*", , xlFormulas, , xlByRows, xlPrevious).Row).Delete

Осталась не решенная 3 проблема.

И теперь раздумываю, как правильно написать макрос с таким алгоритмом:
Нажимаем кнопку - выполняем код выше - сохраняем лист import в новую книгу с расширением .xlsx с названием текущего файла.

x3emz

Update

Sub Кнопка1_Щелчок()
    Rows(Columns(1).Find("*", , xlValues, , xlByRows, xlPrevious).Row + 1 & ":" & _
    Columns(1).Find("*", , xlFormulas, , xlByRows, xlPrevious).Row).Delete
   
Dim FileN$
FileN = ThisWorkbook.Path & "\" & Date & ".xlsx"
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Cells(1, 1).Select
ThisWorkbook.Sheets(8).Copy
ActiveSheet.DrawingObjects.Delete
ActiveWorkbook.SaveCopyAs FileN
ActiveWorkbook.Close SaveChanges:=False
MsgBox "Лист import сохранен в новую книгу" & FileN
   
End Sub

Кнопку реализовал таким путем.
Только теперь вопрос в следующем, что если формулы уже обрезаны на листе и нажимаешь кнопку - удаляется последняя строчка с значениями. Не могу сообразить, как поправить первые две строчки, чтобы не обрезались строчки с значениями.

x3emz


Serge 007

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

x3emz

Цитата: Serge 007 от 19.10.2023, 14:21Что это значит?

Создадим кнопку с макросом и с кодом:
Rows(Columns(1).Find("*", , xlValues, , xlByRows, xlPrevious).Row + 1 & ":" & _
    Columns(1).Find("*", , xlFormulas, , xlByRows, xlPrevious).Row).Delete
Screenshot_27.png
Щелаем...Получаем удаление формул с пустых ячеек... А97 стала пустая и все что ниже...
Screenshot_28.png
Щелкаем еще раз и удаляется ячейка А96, щелкаем еще раз удаляется А95.
Screenshot_29.png

Можно конечно не заморачиваться и сделать, отдельно кнопку на удаление строк и отдельно на сохранение файла...
Тогда явно не дойдет до того, что удалится строчка.
Но если вдруг кто нажмет два раза на кнопку и заметив удалит строчку, будет уже неприятненько....

Serge 007

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

x3emz

Цитата: Serge 007 от 19.10.2023, 16:32Что это значит?

Доброй ночи!
Проблему решил.

Подскажите, пожалуйста, как можно реализовать подобный макрос:
Клик по кнопке
Если в колонке J есть фамилии "Фамилия1" "Фамилия2" "Фамилия3" "Фамилия4"
То в колонке Е
Слово "регистрация" у данной фамилии, например совпала "Фамилия1" заменить на слово "Прилет диспетчер"; Слово "Встреча" заменить на "Вылет диспетчер"
В колонке F для данной фамилии и операции "Прилет диспетчер" значение взять с листа Регистрация ячейка К4
В колонке F для данной фамилии и операции "Вылет диспетчер" значение взять с листа Регистрация ячейка К3

Буду рад помощи, пока мыслей у самого на этот счет нет :(

Serge 007

Цитата: x3emz от 20.10.2023, 05:30реализовать подобный макрос
Это уже другая задача
Создавайте новую тему
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390