Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - [решено] excel изменение значения времени

Ответить
Настройки темы
Разное - [решено] excel изменение значения времени

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Есть такое дело. Имеются 2 автоматически сгенерированных файла, генерируются они каждый день, поэтому каждый день их нужно редактировать. Вопрос редактирования следующий: имеется столбец со временем в первом файле в формате 06:22:06:23(с миллисекундами) и во втором 10:29:00(без млсек соответственно); задача: сдвинуть время на час вперед. К примеру с 06:22:06:23 на 07:22:06:23. Данных в каждом столбце по 1000 штук, руками это делать просто невозможно и нерационально. Помогите советом.

Отправлено: 09:04, 28-10-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата chamskiu:
Имеются 2 автоматически сгенерированных файла, »
Упакуйте в архив образцы этих двух файлов и приложите к сообщению, або на RGhost.

Цитата chamskiu:
в формате 06:22:06:23(с миллисекундами) »
Странный формат. Обычно это выглядит как «06:22:06.023».


Цитата chamskiu:
задача: сдвинуть время на час вперед. К примеру с 06:22:06:23 на 07:22:06:23. »
Может ли там быть время в интервале «23:00»-«23:59»?

Отправлено: 09:25, 28-10-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


chamskiu, пожалуйста, выложите образцы файлов.
PS Iska, долго отправлял

Отправлено: 09:31, 28-10-2014 | #3


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


«23:00»-«23:59» не подойдет.
http://rghost.ru/58754274
http://rghost.ru/58754294

Отправлено: 10:00, 28-10-2014 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Поторопился с «23:00»-«23:59» не подойдет.
Каким методом можете предложить?

Отправлено: 10:31, 28-10-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата chamskiu:
«23:00»-«23:59» не подойдет. »
Цитата chamskiu:
Поторопился с «23:00»-«23:59» не подойдет. »
Я имел в виду — встречаются ли в файлах показания времени в интервале от 23 часов 00 минут до 23 часов 59 минут 59 секунд? Посмотрел сейчас на образцы — да, имеются.

chamskiu, ручками — для «TVTs EVROPA NA 28.10.2014.xls» используйте такую формулу:
Код: Выделить весь код
=ЕСЛИ(ЕПУСТО(A3);"";СЦЕПИТЬ(ТЕКСТ(ВРЕМЗНАЧ(ЛЕВСИМВ(A3;8))+ВРЕМЯ(1;0;0);"чч:мм:сс");":";ПРАВСИМВ(A3;2)))
для «ntv-0 27.10-2.11.2014.xls» ещё проще:
Код: Выделить весь код
=ЕСЛИ(ЕПУСТО(A2);"";ТЕКСТ(ВРЕМЗНАЧ(A2)+ВРЕМЯ(1;0;0);"чч:мм:сс"))
Но Вы, полагаю, хотите именно автоматизацию?

Для «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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо за такой понятный и развернутый ответ, завтра буду пробовать, ибо не хватает времени. По рез-там отпишусь. А на счет автоматизации оч интересно, тоже попробую С НТВ да, все кроме газетной программы.

Отправлено: 13:59, 28-10-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Прошу прощения, что не отвечал. Сегодня только руки дошли. Вставил код, обозвал расширением vbs, радуюсь. Еще раз большое человеческое спасибо, Iska!

Отправлено: 09:27, 05-11-2014 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


chamskiu, завсегда пожалуйста . Какую малость человеку нужно для счастья!

Вспомнилось: «Учитесь радоваться мелочам. Я вот, например, всегда радуюсь, когда получаю зарплату» .

Отправлено: 14:30, 05-11-2014 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - [решено] excel изменение значения времени

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход