![]() |
выбор данных по дате
Ещё просьба о помощи:)
есть эксель с данными, в нем есть столбец дата, по счету он второй:)) там данные в таком формате 30.09.2015 17:40:22 30.09.2015 17:41:00 30.09.2015 17:51:01 и так далее. есть папка D:/metrology в ней файлы, каждый называется примерно так "pda391_2015-06-17_03.35.33.dat" (т.е. в названии дата и время и этот формат унифицирован, он может быть только в таком виде) можно ли сделать макрос, который 1. выберет строки. где разница во времени не менее 10 мин. Т.е. если у нас время идет так 28 38 39 40 41 51 строки со временем 39,40 убираем. Т.е. он должен видеть, что даже если после 51 минуты идет 52, нельзя удалять 51 минуту, т.к. у нее разница с предыдущем времени на 10 мин. т.е. отталкиваемся по возрастанию времени. 2. когда остались нужные записи . Сличим их со временем в названии файла "pda391_2015-06-17_03.35.33.dat и в папку D:/metrology1 копируем те dat файлы, которые совпадают со временем. Просто этих файлов 5000. Я сама не смогу все это в ручную сличить. |
Цитата:
|
Iska, вот ссылка
http://rghost.ru/6KKnZJDF2 Переменных может быть много, хоть 1000 столбцов, строк тоже:) Это просто сокращенный вариант |
Неужели там так все сложно?)
|
Elizavetta, могу предложить следующий код, но с оговорками:
Файлы лежат в папке "D:/metrology" и имеют следующие названия: pda391_2015-06-17_03.35.33.dat , где красная часть неизменна, синий нолик присутствует, если время менее 10 часов (в экселе в вашем примере этот ноль не отображается), черные символы - меняются. Эти моменты принципиальны, так как в случае, если программа не найдет файл для копирования, файл будет пропущен. Разница в 10 минут вычисляется с учетом секунд (т.е. в последовательности 10:05:14, 10:15:13, 10:15:14 второе значение будет пропущено, так как разница между первым и вторым 9:59). Если необходимый файл успешно найден и скопирован - ячейка заливается зеленым цветом, если файл для копирования не найден - красным. Первая строка содержит заголовки. Даты содержатся во втором столбце. Строки не удаляются, вместо этого скрываются (их всегда можно отобразить). Код желательно предварительно протестить на реальном примере. Если в реальном файле содержание будет отличаться от вашего примера (например даты будут записаны например в виде текста) - код выдаст ошибку. Код
Код:
Public Sub Metrology() |
a_axe, а можно сделать ,чтобы эта часть pda391_ была изменна, например pda900_
А стоп, кажется сама нашла решение. Немного учусь) |
Нет, не получилось:( Как сделать, чтобы pdaxxx_принимал разные числа
|
Ошибка в этой строчке
n = ActiveSheet.Cells(2, 2).CurrentRegion.Rows.Count вот файл полный. Правда переменные убрала:)) этот Файл на диск С, а не на D. на D другие pda файлы. http://rghost.ru/6sqp5N9yS |
Цитата:
Цитата:
Код
Код:
Public Sub RowsHide_FileCopy_rev1() Добавлено: В коде поменяйте строчки "C:/Metrology" на "D:/Metrology" и "C:/Metrology1" на "D:/Metrology1", я тестировал на С:, а обратно не переправил. |
Код теперь работает:))) Все ясно кроме одного
например вот в экселе значение даты 13.06.2015 21:15:34 вот в папке D:/Metrology файл pda156_2015-06-13_21.15.34.dat но эта дата красным помечена, типа нет файла. :( и конечно же он не скопировался |
Цитата:
Код написан для диска С:. код
Код:
Public Sub RowsHide_FileCopy_rev3() |
Elizavetta, выкладываю озвученную в личке обратную задачу: перебор имеющихся файлов, поиск соответствующих записей на листе Excel и копирование на новый лист найденных ячеек+диапазона ниже них, укладывающихся в разницу по времени 20 минут.
код
Код:
Public Sub files2newSheet() Поскольку речь идет о многократном копировании одних и тех же диапазонов, лимит записей на новом листе установлен на 1000000 строк. Если файлов у вас на большее количество строк - лишние файлы будут пропущены. Не могу не заметить, что задача не для Экселя: Цитата:
|
Время: 03:36. |
Время: 03:36.
© OSzone.net 2001-