|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - [решено] excel изменение значения времени |
|
Разное - [решено] excel изменение значения времени
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Добрый день. Есть такое дело. Имеются 2 автоматически сгенерированных файла, генерируются они каждый день, поэтому каждый день их нужно редактировать. Вопрос редактирования следующий: имеется столбец со временем в первом файле в формате 06:22:06:23(с миллисекундами) и во втором 10:29:00(без млсек соответственно); задача: сдвинуть время на час вперед. К примеру с 06:22:06:23 на 07:22:06:23. Данных в каждом столбце по 1000 штук, руками это делать просто невозможно и нерационально. Помогите советом.
|
|
Отправлено: 09:04, 28-10-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата chamskiu:
Цитата chamskiu:
Цитата chamskiu:
|
|||
Отправлено: 09:25, 28-10-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Динохромный Сообщения: 702
|
Профиль | Отправить PM | Цитировать chamskiu, пожалуйста, выложите образцы файлов.
PS Iska, долго отправлял |
Отправлено: 09:31, 28-10-2014 | #3 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:00, 28-10-2014 | #4 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Поторопился с «23:00»-«23:59» не подойдет.
Каким методом можете предложить? |
|
Отправлено: 10:31, 28-10-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата chamskiu:
Цитата chamskiu:
chamskiu, ручками — для «TVTs EVROPA NA 28.10.2014.xls» используйте такую формулу: =ЕСЛИ(ЕПУСТО(A3);"";СЦЕПИТЬ(ТЕКСТ(ВРЕМЗНАЧ(ЛЕВСИМВ(A3;8))+ВРЕМЯ(1;0;0);"чч:мм:сс");":";ПРАВСИМВ(A3;2))) Но Вы, полагаю, хотите именно автоматизацию? Для «TVTs EVROPA NA 28.10.2014.xls», на WSH, пробуйте: Скрытый текст
Option Explicit Const strWorksheetName = "Лист1" Dim strSourceFile Dim objRegExp Dim objWorksheet Dim objRange If WScript.Arguments.Count = 1 Then strSourceFile = WScript.Arguments.Item(0) With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strSourceFile) Then Select Case LCase(.GetExtensionName(strSourceFile)) Case "xls", "xlsx" Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^(\d{2}:){3}\d{2}$" With WScript.CreateObject("Excel.Application") '.Visible = True With .Workbooks.Open(strSourceFile) For Each objWorksheet In .Worksheets If objWorksheet.Name = strWorksheetName Then Exit For End If Next If Not objWorksheet Is Nothing Then For Each objRange In objWorksheet.UsedRange.Columns.Item(1).Cells If Not IsEmpty(objRange.Value) Then If objRegExp.Test(objRange.Value) Then objRange.Value = FormatDateTime(DateAdd("h", 1, CDate(Left(objRange.Value, 8))), vbLongTime) & ":" & Right(objRange.Value, 2) End If End If Next .Save Else WScript.Echo "Can't find worksheet [" & strWorksheetName & "] in workbook [" & strSourceFile & "]." End If .Close End With .Quit End With Set objRegExp = Nothing Case Else WScript.Echo "Source file probably is not an Excel workbook." WScript.Quit 2 End Select Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: " & WScript.ScriptName & " <xls source file>" WScript.Quit 1 End If WScript.Quit 0 Можно просто перетащить целевую рабочую книгу на скрипт. А с «ntv-0 27.10-2.11.2014.xls» что делаем? Я понимаю, надо перебрать все рабочие листы, попадающие под маску «НТВ-0 ДД.ММ.ГГ ДеньНедели», т.е., в приведённом примере это будут все листы за вычетом «НТВ - 0. Газетная программа», так? |
||
Отправлено: 13:17, 28-10-2014 | #6 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Большое спасибо за такой понятный и развернутый ответ, завтра буду пробовать, ибо не хватает времени. По рез-там отпишусь. А на счет автоматизации оч интересно, тоже попробую С НТВ да, все кроме газетной программы.
|
Отправлено: 13:59, 28-10-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать chamskiu, спасибо, ясно.
Для «ntv-0 27.10-2.11.2014.xls», на WSH, пробуйте: Скрытый текст
Option Explicit Dim strSourceFile Dim objRegExp Dim objWorksheet Dim objRange If WScript.Arguments.Count = 1 Then strSourceFile = WScript.Arguments.Item(0) With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strSourceFile) Then Select Case LCase(.GetExtensionName(strSourceFile)) Case "xls", "xlsx" Set objRegExp = WScript.CreateObject("VBScript.RegExp") With WScript.CreateObject("Excel.Application") '.Visible = True With .Workbooks.Open(strSourceFile) For Each objWorksheet In .Worksheets objRegExp.Pattern = "^НТВ-0 \d{2}\.\d{2}\.\d{2} \S+$" If objRegExp.Test(objWorksheet.Name) Then objRegExp.Pattern = "^\d{2}:\d{2}:\d{2}$" For Each objRange In objWorksheet.UsedRange.Columns.Item(1).Cells If Not IsEmpty(objRange.Value) Then If objRegExp.Test(objRange.Value) Then objRange.Value = FormatDateTime(DateAdd("h", 1, CDate(objRange.Value)), vbLongTime) End If End If Next End If Next .Save .Close End With .Quit End With Set objRegExp = Nothing Case Else WScript.Echo "Source file probably is not an Excel workbook." WScript.Quit 2 End Select Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: " & WScript.ScriptName & " <xls source file>" WScript.Quit 1 End If WScript.Quit 0 Аналогично, можно просто перетащить целевую рабочую книгу на скрипт. |
Отправлено: 14:35, 28-10-2014 | #8 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Прошу прощения, что не отвечал. Сегодня только руки дошли. Вставил код, обозвал расширением vbs, радуюсь. Еще раз большое человеческое спасибо, Iska!
|
Отправлено: 09:27, 05-11-2014 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать chamskiu, завсегда пожалуйста . Какую малость человеку нужно для счастья!
Вспомнилось: «Учитесь радоваться мелочам. Я вот, например, всегда радуюсь, когда получаю зарплату» . |
Отправлено: 14:30, 05-11-2014 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - [решено] [Excel] Присвоение значения ячейке | PhilB | Программирование и базы данных | 23 | 30-04-2020 15:08 | |
2010 - Excel - Сложить значения определенных ячеек | ALaN_1 | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 31-10-2011 22:22 | |
Интернет - [решено] Изменение значения MTU | lirina | Microsoft Windows Vista | 6 | 29-09-2010 22:42 | |
2003/XP/2000 - Excel | Пустые значения в ряду данных графика | AlexM | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 06-02-2010 07:17 | |
2007 - Excel | Вычисление времени в Excel | Vowan | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 01-02-2010 17:09 |
|