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

Страницы: 1
Найти совпадение по тексту в разных книгах, Найти совпадение по тексту в разных книгах
 
Огромное спасибо, добрый человек! Разобрался, все заработало!
Найти совпадение по тексту в разных книгах, Найти совпадение по тексту в разных книгах
 
Спасибо, но ведь у меня уже есть функция, которая ищет нужную ячейку, и она значительно короче предложенного Вами варианта (и боюсь, мне как новичку в этом деле, будет тяжело сейчас перестроить весь свой код на новый лад).
Вы не могли бы мне сказать, почему не работает мой код? Ведь значения в ячейках одинаковые...
Изменено: asilay - 24.01.2019 11:03:46
Найти совпадение по тексту в разных книгах, Найти совпадение по тексту в разных книгах
 
Спасибо, Inexsu за Ваше время. вот только не могли бы мне объяснить, что значит Ваш код?
Цитата
asilay написал:
я не большой спец в экселе
:(
Найти совпадение по тексту в разных книгах, Найти совпадение по тексту в разных книгах
 
Здравствуйте, друзья!

Нужна ваша помощь со следующей проблемой. Имеется месячный табель учета рабочего времени пользователей (прикладываю). Также имеется ежедневный отчет, который я получаю из системы СКД (файл прикладываю). Задача моего скрипта в том, чтобы найти в отчете нужную дату и по этой дате занести данные в месячный табель. Нужную дату я получаю так: беру имеющееся данные из "B2" (22.01.2019  8:49:24) и копирую в ячейку...
Код
With Workbooks(otchet).Worksheets(1)
.Cells(2, "D").NumberFormat = "m/d/yyyy" ''сначала формат ячейки общий, поэтому я его преобразую
.Cells(2, "D") = .Cells(2, "B") '' копирую инфу из B2
.Cells(2, "D") = Right(Left(.Cells(2, "D"), 10), 10) ''обрезаю со всех сторон, чтобы получить 22.01.2019

Однако вот тут и начинается проблема.
Код
With Workbooks(sFile).Worksheets(1)
FoundDateCol = Rows(1).Find(.Range("D2"), , xlFormulas, xlWhole).Column ''при "активном" табеле ищем нужную дату в отчете в ячейке D2

При разных махинациях удалось выяснить, что если в ячейке D2 поставить курсор в конце даты и нажать раз 5-10 кнопку delete, то макрос начинает работать. Как будто он удаляет еще какие-то символы в строке, но их же там быть не должно так как обрезка отрабатывает корректно

Помогите разобраться, какая-то мистика:)

П.С. файл отчета изначально получаю в формате .xls, а затем преобразую в .xlsx, может это важно

П.П.С. если кто-то предложит более изящное решение, как найти необходимую дату без копирования ее в новую ячейку - буду признателен, я не большой спец в экселе:)

Изменено: asilay - 24.01.2019 08:25:31
поиск и удаление лишних строк
 
Огромное спасибо, Kuzmich!

Слегка подкорректировал, потому что текст убегал. получилось так:
Код
Sub iDel()
Dim i As Long
Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
   Range("E3:E" & iLastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Range("A3:F" & iLastRow).Sort Key1:=Range("E2")
     For i = iLastRow To 2 Step -1
       If Cells(i - 1, "E") = Cells(i, "E") Then
         If Cells(i - 2, "E") = Cells(i - 1, "E") Then
           Cells(i - 1, "E").EntireRow.Delete
         End If
       End If
     Next
End Sub
Скажите пожалуйста, почему все же
Цитата
Kuzmich написал: For i = iLastRow To 5
у меня такой макрос оставил несколько повторений первого сотрудника. я изменил на 2 и все заработало. Правильно ли я сделал?
Изменено: asilay - 09.08.2017 08:29:49
поиск и удаление лишних строк
 
Цитата
Z написал:
А к чему/кому оно - время - привязано?
Как только делается сортировка по сотрудникам - все становится на свои места, такого вопроса даже не возникает:)

5:33:041-я дверьвходсотрудник 1
5:43:042-я дверьвыходсотрудник 2
6:33:041-я дверьвходсотрудник 2
6:53:043-я дверьвходсотрудник 2
8:03:044-я дверьвыходсотрудник 2
8:33:047-я дверьвходсотрудник 2
5:53:043-я дверьвходсотрудник 3
После сортировки получаем нечто такое. В данном случае нас интересует только время 5:43 и 8:33 второго сотрудника.
Изменено: asilay - 08.08.2017 15:26:24
поиск и удаление лишних строк
 
Цитата
Z написал:
А с правилами Вы ознакомились? Ваша тема останется на форуме
Извините, хотел быстрее получить ответ, не подумал об оформлении. Если я разобью свой вопрос на несколько тем, повысит ли это мои шансы на получение ответа?)
поиск и удаление лишних строк
 
Цитата
Z написал:
И что будем иметь?! Сотрудник 2 утром вышел, а в ночь пришел - как это понимать?
Посмотрите пожалуйста лист 2, в котором есть ответ. Нужно лишь первое и последнее время, а какое оно - совершенно не важно, но на самом деле период времени всех действий с 5:00 по 23:00 того же дня.

Цитата
vikttur написал:
Это не вопрос, это ТЗ на разработку. А в этой ветке форума помогают решать конкретные вопросы.
Я могу все это разбить на конкретные вопросы, но разве есть в этом смысл?)
Сортировку я могу сделать стандартными средствами, Вы правы, этот вопрос снимается
Остается лишь:
1) "удалить все строки, кроме самой первой, где ячейка 5-го столбца пустая" - уверен, это 3 строчки кода для понимающего человека:)
2) "найти самое раннее и самое позднее время совершения сотрудником действий и удалить всё (все строки), что находится между этими действиями." Да, это посложнее, поэтому рассчитываю на добродушного специалиста:)
поиск и удаление лишних строк
 
Здравствуйте, друзья!

Еще раз большое спасибо за помощь в предыдущем решении. Надеюсь, не откажете и с этим. Каждый день получаю файл со структурой, которую в точности повторил в примере. Поясню: это список определенных действий людей, который отсортирован по времени, но не по имени. Есть, также, часть действий, совершенных неопределенным объектом (нет записи в колонке "Имя"). Необходимо получить таблицу в виде, который показан на листе 2: то есть, удалить все строки, кроме самой первой, где ячейка 5-го столбца пустая, отсортировать по имени, найти самое ранее и самое позднее время совершения сотрудником действий и удалить все, что находится между этими действиями. Я представляю, какой должен быть здесь алгоритм, но опять же, не владею синтаксисом VBA, поэтому надеюсь на помощь специалистов.

Будьте добры, уважаемые форумчане, помогите с решением!
Копирование/перемещение текста по условию
 
Большое Вам спасибо, Kuzmich,  я разобрался!
Копирование/перемещение текста по условию
 
Kuzmich, извините, видимо, я не так выразился, моя вина. я бы не хотел комментить часть кода каждый раз, когда работаю с такой таблицей. не могли бы Вы помочь мне с универсальным макросом, который будет копировать только имеющиеся данные, пропуская пустые столбцы? то есть хотелось бы одним макросом отработать сначала по столбцу прихода, а потом им же отработать по столбцу ухода
Цитата
Kuzmich написал:
Макрос подтягивает данные с лист2 в лист1 согласно дате
большое спасибо, что решили сделать по феншую, но теперь я застрял и не могу это упростить:)) может быть поправите, чтобы начинался отсчет с 1-й строчки, без учета типа ячейки?
Копирование/перемещение текста по условию
 
Цитата
Kuzmich написал:
Ну, а что такое макрос, тем более
Вы правы, я не занимался никогда изучением макросов, впервые появилась такая задача, надеюсь на советы специалистов)
Копирование/перемещение текста по условию
 
Цитата
Kuzmich написал:
For i = 3 To iLastRow
Пытаюсь упростить Ваше решение, избавляясь от своих же названий столбцов (удалил пару лишних строк сверху), но когда меняю i=3 на i=1, выходит ошибка 91.
И еще... Как можно скорректировать решение таким образом, чтобы можно было сначала скопировать первый столбец (время прихода), а затем второй (время ухода), так как опять же здесь бывают несостыковки и работать приходится отдельно со столбцами. При данном решении если копируешь сначала первый столбец (второй пуст), то при копировании второго столбца (первый пуст) на листе 1 первый столбец затирается. Может здесь можно сделать корректировку на пропуск пустых строк?
Изменено: asilay - 07.08.2017 11:51:18
Копирование/перемещение текста по условию
 
К сожалению, не знаю, что такое впр...
Копирование/перемещение текста по условию
 
Цитата
asilay написал:
лист2.строка.N,столбец.N+1 в лист1.строка.N,столбец.N+1
Точнее лист2.строка.N,столбец.N+1 и лист2.строка.N,столбец.N+2 в лист1.строка.N,столбец.N+1 и в лист1.строка.N,столбец.N+2

Заранее благодарен за ваше время
Изменено: asilay - 07.08.2017 09:43:37
Копирование/перемещение текста по условию
 
Здравствуйте, уважаемые форумчане! Прошу помогите с одним вопросом. Каждый день в Excel имеется отчет о приходе/уходе сотрудников из офиса в алфавитном порядке, их количество колеблется (30-35). Есть общий табель присутствия на работе, в котором все фамилии в алфавитном порядке (40). Вопрос в следующем: как сделать так, чтобы можно было скопировать время прихода пришедших и вставить его в нужные ячейки напротив соответствующих фамилий в общем табеле без лишних махинаций? Примерно алгоритм себе представляю так: внешний цикл идет по фамилиям первого листа и сравнивает их с фамилиями на втором листе (внутренний цикл). Когда находит совпадение, копирует значение ячейки лист2.строка.N,столбец.N+1 в лист1.строка.N,столбец.N+1. К сожалению, не силен в синтаксисе VBA...
П.С. возможности генерации отчета сразу в необходимый табель в нужные ячейки нету, так что имеется 2 листа (оба в книге есть). Не будет проблемой, если кто-то из уважаемых коллег сможет предложить вариант копирования из одной части страницы в другую, с первым листом вполне можно работать. На данный момент время прихода из второго листа копируется руками отдельно для (плюс-минус) каждой фамилии каждый день. Можно ли облегчить эту задачу, например, с помощью макроса?
Страницы: 1
Наверх