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

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - Создание "сложных" правил для выделения ячеек в excel 2016

Ответить
Настройки темы
2016 - Создание "сложных" правил для выделения ячеек в excel 2016

Аватара для Tolea3

Пользователь


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

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


у нас на работе поставили турникет и всем раздали карточки с чипами. Этот турникет через програму генерирует отчеты в excel файл. Шапку документа не бирём в счет, одна строка содержит точное время, направление (вход/выход), номер карточки и имя владелица. Мне надо сделать красный фон всех ячеек ряда (до владелица карточки) в тех случеях если сотрудник имеет вход поже 08:35:00 или выход ранише 17:25:00. Хочется автоматизировать процес ибо сотрудников 100+ и обрабатывать вручную всё выходит муторно. Прикрепляю документ для ваших опытов.14. Judecatori.xlsx

Отправлено: 00:53, 20-12-2017

 

Ветеран


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

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


Если «ручками»:
  • пишете в E4 значение 08:35:00, в E5 — значение 17:25:00;
  • умножаете диапазон дат на единицу (пример — Как быстро умножить диапазон значений на одно и тоже число без формул и макросов? - Мир MS Excel), чтобы значения в ячейках диапазона превратились из текста в число (дата/время в Excel — это на самом деле число, где целая часть обозначает дату, а дробная — время);
  • оставшемуся выделенным диапазону дат задаёте условное форматирование в виде:
    Скрытый текст
  • получаете следующий результат:
    Скрытый текст

Можно написать макрос, который будет делать подобное автоматически, а Вы сможете поместить его, например, в персональную книгу макросов и вызывать для обработки активного Рабочего листа. Можно написать скрипт, который Вы будете «натравливать» на файл Рабочей книги Excel. Что скажете?

Отправлено: 02:11, 20-12-2017 | #2



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

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


Аватара для Tolea3

Пользователь


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

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


Цитата Iska:
Можно написать скрипт, который Вы будете «натравливать» на файл Рабочей книги Excel. Что скажете? »
Буду рад если сделаите

Отправлено: 02:17, 20-12-2017 | #3


Ветеран


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

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


Цитата Tolea3:
Буду рад если сделаите »
Я попробую. Ваша задача выбрать, что именно будем делать из:
Цитата Iska:
Можно написать макрос, который будет делать подобное автоматически, а Вы сможете поместить его, например, в персональную книгу макросов и вызывать для обработки активного Рабочего листа. Можно написать скрипт, который Вы будете «натравливать» на файл Рабочей книги Excel. »

Отправлено: 02:19, 20-12-2017 | #4


Аватара для Tolea3

Пользователь


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

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


Iska, да мне и то и то понятны тока на половину. так что, что сделаите тому и буду рад

Отправлено: 02:21, 20-12-2017 | #5


Ветеран


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

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


Ну, давайте попробуем скрипт WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const xlDown        = &HFFFFEFE7

Const xlPasteValues = &HFFFFEFBD
Const xlMultiply    = 4

Const xlCellValue   = 1
Const xlBetween     = 1


Dim strSourceFile
Dim objFSO


If WScript.Arguments.Count = 1 Then
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	strSourceFile = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0))
	
	If objFSO.FileExists(strSourceFile) Then
		Select Case LCase(objFSO.GetExtensionName(strSourceFile))
			Case "xls", "xlsx"
				With WScript.CreateObject("Excel.Application")
					With .Workbooks.Open(strSourceFile)
						With .Worksheets.Item(1).Range("B7")
							If .Value = "Время" Then
								With .Range("E8")
									.Value = 1
									.Copy
								End With
								
								With .Parent.Range(.Offset(1, 0), .Offset(1, 0).End(xlDown))
									.PasteSpecial xlPasteValues, xlMultiply, False, False
									
									With .FormatConditions
										.Delete
										.Add(xlCellValue, xlBetween, CDbl(#08:35:00#), CDbl(#17:25:00#)).Interior.ColorIndex = 3
									End With
								End With
								
								.Range("E8").ClearContents
								.Range("A1").Select
							Else
								WScript.Echo "Can't find value [Время] in [B7] cell."
								.Select
								.Application.Visible = True
								
								WScript.Quit 4
							End If
						End With
						
						.Save
						.Close
					End With
					
					.Quit
				End With
			Case Else
				WScript.Echo "Probably source file [" & strSourceFile & "] not an Excel Workbook."
				WScript.Quit 3
		End Select
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0

Сохраните код в файл с расширением «.vbs». Путь к исходному файлу Рабочей книги указывается аргументом скрипта (также можно просто перетянуть файл Рабочей книги на скрипт в Проводнике).

Отправлено: 04:06, 20-12-2017 | #6


Аватара для Tolea3

Пользователь


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

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


Iska, спс за ваши труды но паралелино дали совет по проше с другова источника
Код: Выделить весь код
создаём новое правило:
=И($C9="вход";$B9>"08:35")+И($C9="выход";$B9<"17:25")
а в поле применяется к, пишем:
=$A$9:$E$100
Результат

Последний раз редактировалось Tolea3, 20-12-2017 в 04:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:29, 20-12-2017 | #7


Аватара для Tolea3

Пользователь


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

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


Изображения
Тип файла: png Screenshot_1.png
(36.1 Kb, 5 просмотров)

чуствую завтра все начнут писать обяснителиные за красные полоски

Отправлено: 04:37, 20-12-2017 | #8


Ветеран


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

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


Цитата Tolea3:
но паралелино дали совет по проше с другова источника »
Логично, и отчасти даже более правильно, поскольку совместно сравнивается и соседний столбец Направление. Я всё время делаю по старинке, забывая, что уже давно можно использовать не только значение, но и формулу.

Тем не менее, в указанной формуле сравнивается не дата/время с дата/время, а строка со строкой. В данном случае, скорее всего, сие не будет являться необходимым условием, поскольку строки со временем у Вас все одинаковой длины, и час предшествует минутам, а те — секундам, но в ином случае моё замечание насчёт перевода строк в числа:
Цитата Iska:
умножаете диапазон дат на единицу (пример — Как быстро умножить диапазон значений на одно и тоже число без формул и макросов? - Мир MS Excel), чтобы значения в ячейках диапазона превратились из текста в число (дата/время в Excel — это на самом деле число, где целая часть обозначает дату, а дробная — время); »
остаётся существенным.

Цитата Tolea3:
чуствую завтра все начнут писать обяснителиные за красные полоски »
Э… Сегодня, полагаю.

P.S. Tolea3, переписать скрипт на использование формулы — дабы не вводить её в каждую новую Рабочую книгу «ручками»?

Последний раз редактировалось okshef, 23-12-2017 в 09:20.


Отправлено: 05:05, 20-12-2017 | #9


Аватара для Tolea3

Пользователь


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

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


Iska, я рад что у меня нет красных полосок. я в отпуске

Iska, скриптик сделаете?

Последний раз редактировалось okshef, 23-12-2017 в 09:21.


Отправлено: 05:12, 20-12-2017 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - Создание "сложных" правил для выделения ячеек в excel 2016

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
18.03.2016 IT'S MOBILE "DOS" TIME. 640KB of memory "ought to be enough for anybody." mrcnn Флейм 0 18-03-2016 06:31
[решено] При открытие "vk.com", "выкидывает" на страницу для "разморозки страницы" sovenok Лечение систем от вредоносных программ 17 21-11-2013 04:09
Создание "Прогресса" на время работы "InetGetSize" sashadeg AutoIt 24 30-09-2009 15:26
Обход "правил" в w2000 server Domine Защита компьютерных систем 2 09-11-2003 00:59




 
Переход