![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] выбор данных по дате |
|
|
2010 - [решено] выбор данных по дате
|
Пользователь Сообщения: 77 |
Ещё просьба о помощи
![]() есть эксель с данными, в нем есть столбец дата, по счету он второй ![]() там данные в таком формате 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. Я сама не смогу все это в ручную сличить. |
|
Отправлено: 19:12, 27-01-2016 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Elizavetta:
|
|
Отправлено: 19:26, 27-01-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Iska, вот ссылка
http://rghost.ru/6KKnZJDF2 Переменных может быть много, хоть 1000 столбцов, строк тоже ![]() Это просто сокращенный вариант |
Отправлено: 10:55, 28-01-2016 | #3 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Неужели там так все сложно?)
|
Отправлено: 11:36, 29-01-2016 | #4 |
Динохромный Сообщения: 712
|
Профиль | Отправить PM | Цитировать 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() Dim i As Integer, j As Integer, n As Integer Dim myCell As Range Dim strFN As String Dim answ As Integer Dim diff As Double diff = 1 / 24 / 6 n = ActiveSheet.Cells(2, 2).CurrentRegion.Rows.Count For i = 2 To n j = i + 1 Do While j <= n And ActiveSheet.Cells(j, 2).Value - ActiveSheet.Cells(i, 2).Value <= diff ActiveSheet.Rows(j).Hidden = True j = j + 1 Loop i = j - 1 Next ActiveSheet.Rows(1).Hidden = True Intersect(ActiveSheet.Cells(2, 2).CurrentRegion, ActiveSheet.Columns(2)).SpecialCells(xlCellTypeVisible).Select For Each myCell In Selection If myCell.Value Like "##.##.#### #:##:##" Then strFN = "pda391_" & Replace(Replace(myCell.Value, " ", "_0") & ".dat", ":", ".") Else strFN = "pda391_" & Replace(Replace(myCell.Value, " ", "_") & ".dat", ":", ".") End If If Dir("d:\metrology\" & strFN) <> "" Then FileCopy "d:\metrology\" & strFN, "d:\metrology1\" & strFN myCell.Interior.Color = vbGreen Else ' answ = MsgBox("Отсутствует файл d:\metrology\" & strFN & ", он будет пропущен. Продолжить обработку дальше?", vbYesNo, "Ошибка!") ' If answ = vbNo Then Exit Sub myCell.Interior.Color = vbRed End If Next ActiveSheet.Rows(1).Hidden = False End Sub |
|
Отправлено: 16:59, 29-01-2016 | #5 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать a_axe, а можно сделать ,чтобы эта часть pda391_ была изменна, например pda900_
А стоп, кажется сама нашла решение. Немного учусь) |
Последний раз редактировалось Elizavetta, 01-02-2016 в 12:03. Отправлено: 11:55, 01-02-2016 | #6 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Нет, не получилось
![]() |
Отправлено: 12:37, 01-02-2016 | #7 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Ошибка в этой строчке
n = ActiveSheet.Cells(2, 2).CurrentRegion.Rows.Count вот файл полный. Правда переменные убрала ![]() http://rghost.ru/6sqp5N9yS |
Отправлено: 14:05, 01-02-2016 | #8 |
Динохромный Сообщения: 712
|
Профиль | Отправить PM | Цитировать Цитата Elizavetta:
Цитата Elizavetta:
Код
Public Sub RowsHide_FileCopy_rev1() Dim i As Long, j As Long, n As Long Dim myCell As Range Dim strFN As String Dim answ As Integer Dim diff As Double diff = 1 / 24 / 6 n = ActiveSheet.Cells(2, 2).CurrentRegion.Rows.Count For i = 2 To n j = i + 1 Do While j <= n And ActiveSheet.Cells(j, 2).Value - ActiveSheet.Cells(i, 2).Value <= diff ActiveSheet.Rows(j).Hidden = True j = j + 1 Loop i = j - 1 Next ActiveSheet.Rows(1).Hidden = True Intersect(ActiveSheet.Cells(2, 2).CurrentRegion, ActiveSheet.Columns(2)).SpecialCells(xlCellTypeVisible).Select For Each myCell In Selection If myCell.Value Like "##.##.#### #:##:##" Then strFN = Replace(Replace(myCell.Value, " ", "_0") & ".dat", ":", ".") Else strFN = Replace(Replace(myCell.Value, " ", "_") & ".dat", ":", ".") End If strFN = Dir("d:\metrology\pda???_" & strFN) If strFN <> "" Then FileCopy "d:\metrology\" & strFN, "d:\metrology1\" & strFN myCell.Interior.Color = vbGreen Else ' answ = MsgBox("Отсутствует файл d:\metrology\" & strFN & ", он будет пропущен. Продолжить обработку дальше?", vbYesNo, "Ошибка!") ' If answ = vbNo Then Exit Sub myCell.Interior.Color = vbRed End If Next ActiveSheet.Rows(1).Hidden = False End Sub Добавлено: В коде поменяйте строчки "C:/Metrology" на "D:/Metrology" и "C:/Metrology1" на "D:/Metrology1", я тестировал на С:, а обратно не переправил. |
||
Последний раз редактировалось a_axe, 01-02-2016 в 15:43. Отправлено: 15:25, 01-02-2016 | #9 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Код теперь работает
![]() например вот в экселе значение даты 13.06.2015 21:15:34 вот в папке D:/Metrology файл pda156_2015-06-13_21.15.34.dat но эта дата красным помечена, типа нет файла. ![]() |
Отправлено: 16:42, 01-02-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) | DIMM2005 | Программное обеспечение Windows | 36 | 03-01-2020 16:54 | |
CMD/BAT - Сортирование файлов по папкам (копирование в многоуровневые папки по дате создания) | Systems | Скриптовые языки администрирования Windows | 18 | 03-10-2014 11:37 | |
2010 - Access 2010 - сбор данных в один фильтр и подстановка значений по условию выбор | mlm1 | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 27-02-2013 11:37 | |
2010 - как сделать выбор параметра из таблицы данных по входному условию | Pozia | Microsoft Office (Word, Excel, Outlook и т.д.) | 15 | 06-06-2011 21:49 | |
CMD/BAT - [решено] Выбор данных из txt по маске | hxygen | Скриптовые языки администрирования Windows | 4 | 24-10-2010 15:52 |
|