Унесите радне дане пон - пет у радни лист користећи ВБА у Мицрософт Екцелу

Anonim

У овом чланку ћемо створити макро за издвајање радних дана између два датума.

У овом примеру морамо да наведемо датум почетка и датум завршетка пре покретања макронаредбе. Макро бира вредност датума почетка из ћелије Ј8 и вредност датума завршетка из ћелије Ј9. Након одређивања датума почетка и завршетка, макро се може извршити притиском на дугме „Пошаљи“ или притиском на тастере за пречице Алт + Ф8.

Када покренете макро, вратиће се радни дани између два датума на новом листу. Ново уметнути радни лист садржи дане у колони А, иза којих следи одговарајући датум у колони Б. Излазни датум у колони Б ће бити у формату дд.мм.ии.

Након сваке недеље следи празан ред за разликовање две узастопне недеље.

Логичко објашњење

У макроу смо користили функцију Радни дан за разликовање између радних дана и викенда. Функција обликовања користи се за приказ датума у ​​траженом формату.

Функција за радни дан

Функција Веекдаи враћа целобројну вредност која представља дан у недељи.

Синтакса

Радни дан (Датум_Вредност, [Први_Дан_О__недеље])

Дате_Валуе одређује вредност датума за коју желите да пронађете дан у недељи.

Први_Дан_О_ недеље одређује који дан у недељи се сматра првим даном у недељи. За улаз је потребна целобројна вредност или вредност изабрана из набрајања ФирстДаиОфВеек. Ако није наведена вредност, тада се ФирстДаиОфВеек.Сундаи користи као подразумевана вредност.

Вредност набрајања

Целобројна вредност

Примедбе

ФирстДаиОфВеек.Систем

0

Први дан у недељи наведен у системским поставкама

ФирстДаиОфВеек.Сундаи

1

Недеља (подразумевано)

ФирстДаиОфВеек.понедјељак

2

Понедељак

ФирстДаиОфВеек.Туесдаи

3

Уторак

ФирстДаиОфВеек.Веднесдаи

4

Среда

ФирстДаиОфВеек.Тхурсдаи

5

Четвртак

ФирстДаиОфВеек.Фридаи

6

Петак

ФирстДаиОфВеек.Саботдаи

7

Субота

Као што се види из кода макроа, користили смо радни дан (и, 2) да наведемо понедељак као први дан у недељи.

Функција форматирања

Функција Формат узима датум као улаз и враћа га као форматирани низ.

Синтакса функције Формат

Формат (Дате_Валуе, формат)

Дате_Валуе одређује вредност типа података датума.

Формат користи вредност низа да одреди која врста формата датума је потребна.

Следећа табела дефинише неке популарне знакове које можете користити за креирање потребних формата датума/времена:

Цхарацтер

Опис

д

приказује дан као број без почетне нуле (1 - 31)

дд

приказује дан као број са почетном нулом (01 - 31)

ддд

приказује дан као скраћеницу (нед - суб)

дддд

приказује дан као пуно име (недеља - субота)

в

приказује дан у недељи као број (1 за недељу до 7 за суботу)

вв

приказује недељу у години као број (1 - 54)

м

приказује месец као број без почетне нуле (1 - 12)

мм

приказује месец као број са почетном нулом (01 - 12)

ммм

приказује месец као скраћеницу (јануар - дец)

мммм

приказује месец као пуно име месеца (јануар - децембар)

к

приказује квартал у години као број (1 - 4)

и

приказује дан у години као број (1 - 366)

ии

приказује годину као двоцифрени број (00 - 99)

гггг

приказује годину као четвороцифрени број (100 - 9999)

х

приказује сат као број без водећих нула (0 - 23)

ХХ

приказује сат као број са водећим нулама (00 - 23)

н

приказује минут као број без водећих нула (0 - 59)

нн

приказује минут као број са водећим нулама (00 - 59)

с

приказује другу као број без водећих нула (0 - 59)

сс

приказује другу као број са водећим нулама (00 - 59)

Да бисмо оставили празан ред на крају сваке недеље, проверили смо да ли постоји недеља коришћењем функције радни дан и повећали вредност променљиве „СтартингРов“ за 1 тако да следећи ред остане празан.

Као што се види у коду макроа, функцију Формат смо користили два пута на различите начине. Прво, користили смо Формат (и, "ддд") за добијање радног дана, а затим смо користили Формат (и, "дд.мм.ии") да бисмо добили датум у формату дд.мм.ииии.

Објашњење кода

Затамните нови радни лист као радни лист

Постави НевВорксхеет = Радни листови.Додај

Горњи код се користи за декларисање назива објекта радног листа као „НевВорксхеет“. Ворксхеетс.Адд метода се користи за додавање новог радног листа у колекцију Ворксхеетс. Наредба сет се користи за иницијализацију декларисаног објекта са ново уметнутим листом.

За и = Датум почетка до краја датума

ФОР петља се користи за петљу од датума почетка до датума завршетка.

Ако је дан у недељи (и, 2) <6 Тада

ИФ наредба се користи за проверу стања и извршавање кода на основу услова. Горњи услов ће проверити враћање вредности помоћу функције Веекдаи. Ако је мање од 6, ИФ услов враћа труе и код унутар ИФ наредбе ће се извршити. У супротном ће се прескочити.

СтартингРов = 1

СтартингРов = СтартингРов + 1

Варијабла СтартингРов се користи за кретање кроз редове на радном листу. На почетку, променљива се иницијализује у први ред. Са сваким успешним извршавањем ИФ наредбе, вредност променљиве се повећава за 1, прелазећи на следећи ред у листу.

Ћелије (СтартингРов, 1)

Својство ћелија се користи за референцирање одређене ћелије на радном листу. Ћелије (број редака, број ступца) могу се користити за референцирање било које ћелије на радном листу уношењем одређеног броја реда и броја колоне као параметара. У коду Ћелије (СтартингРов, 1), 1 наводи прву колону, а променљива „СтартингРов“ дефинише број реда.

Кодови се лако могу разумети јер сам у макро укључио коментаре заједно са кодовима.

Молимо следите доле за код

 Опција Експлицитни Суб ЕктрацтВеекдаис () 'Декларисање две променљиве типа Дата Дате Дим СтартДате као Дате, ЕндДате Ас Дате' Декларисање променљиве радног листа Дим НевВорксхеет као Ворксхеет Дим СтартингРов, и Ас Лонг 'Добијање датума почетка и датума завршетка са радног листа СтартДате = Схеетс ( "Макро"). Опсег ("Ј8"). Вредност Крајњи датум = Табеле ("Макро"). Опсег ("Ј9"). Вредност 'Иницирање броја почетног реда за излаз СтартингРов = 1' Уметање новог радног листа Поставите нови радни лист = Радни листови. Додај за и = Датум почетка до краја датума 'Помоћу методе Радни дан проверите да ли је дан у недељи или викенд Ако је Дан у недељи (и, 2) <6 Затим се метод "Уметање вредности на ново уметнути радни лист" користи за обликовање вредности датума НевВорксхеет.Целлс ( СтартингРов, 2) = Формат (и, "дд.мм.ии") НевВорксхеет.Целлс (СтартингРов, 1) = Формат (и, "ддд") 'Ажурирање вредности променљиве СтартингРов за прелазак у следећи ред СтартингРов = СтартингРов + 1 Енд Иф 'Уметање празног реда за викенд Иф Веекдаи (и, 2) = 7 Тхен СтартингРов = СтартингРов + 1 Енд Иф Н ект и Сет НевВорксхеет = Ништа Крај Суб 

Ако вам се допао овај блог, поделите га са пријатељима на Фацебооку. Такође, можете нас пратити на Твиттер -у и Фацебоок -у.

Волели бисмо да чујемо од вас, јавите нам како можемо побољшати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште