Обликовање бројева у програму Екцел ВБА

Обликовање бројева у програму Екцел ВБА

Бројеви долазе у свим врстама формата у радним листовима програма Екцел. Можда сте већ упознати са искачућим прозором у Екцелу за коришћење различитих нумеричких формата:

Форматирање бројева олакшава читање и разумевање бројева. Екцел подразумевано за бројеве унете у ћелије је формат „Опште“, што значи да се број приказује тачно онако како сте га унели.

На пример, ако унесете округли број, нпр. 4238, биће приказано као 4238 без децималног зареза или одвајача хиљада. Децимални број као што је 9325,89 ће бити приказан са децималном тачком и децималама. То значи да се неће поредати у колони са округлим бројевима и да ће изгледати изузетно неуредно.

Такође, без приказивања хиљада сепаратора, тешко је видети колико је заправо велики број без пребројавања појединачних цифара. Да ли је то у милионима или десетинама милиона?

Са тачке гледишта корисника који гледа низ колону бројева, то отежава читање и упоређивање.

У ВБА имате приступ потпуно истом распону формата који имате на предњој страни програма Екцел. Ово се односи не само на унету вредност у ћелију на радном листу, већ и на ствари као што су оквири за поруке, контроле УсерФорм -а, графикони и графикони и статусна трака програма Екцел у доњем левом углу радног листа.

Функција Формат је изузетно корисна функција у ВБА у смислу презентације, али је такође веома сложена у смислу флексибилности која се нуди у начину приказа бројева.

Како се користи функција обликовања у ВБА

Ако приказујете оквир за поруку, тада се функција Формат може користити директно:

1 МсгБок формат (1234567.89, "#, ## 0.00")

Ово ће приказати велики број помоћу зареза за одвајање хиљада и за приказивање 2 децимална места. Резултат ће бити 1.234.567,89. Нуле уместо хеша осигуравају да се децимале приказују као 00 у целим бројевима и да постоји нула на почетку за број који је мањи од 1

Симбол хасхтага (#) представља чувар места цифре који приказује цифру ако је доступна на том месту, или ништа друго.

Такође можете користити функцију обликовања за обраћање појединачној ћелији или низ ћелија за промену формата:

1 Табеле ("Лист1"). Опсег ("А1: А10"). НумберФормат = "#, ## 0.00"

Овај код ће подесити опсег ћелија (А1 до А10) у прилагођени формат који раздваја хиљаде зарезима и приказује 2 децимална места.

Ако проверите формат ћелија на предњем делу програма Екцел, видећете да је креиран нови прилагођени формат.

Бројеве можете форматирати и на статусној траци програма Екцел у доњем левом углу прозора програма Екцел:

1 Апплицатион.СтатусБар = Формат (1234567.89, "#, ## 0.00")

Ово бришете са статусне траке помоћу:

1 Апплицатион.СтатусБар = ""

Креирање низа формата

Овај пример ће додати текст „Укупна продаја“ после сваког броја, као и сепаратор хиљада

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "#, ## 0.00" "Укупна продаја" ""

Овако ће изгледати ваши бројеви:

Имајте на уму да ћелија А6 има формулу „СУМ“, која ће укључивати текст „Укупне продаје“ без потребе за форматирањем. Ако се форматирање примени, као у горњем коду, неће ставити додатну инстанцу „укупне продаје“ у ћелију А6

Иако ћелије сада приказују алфанумеричке знакове, бројеви су и даље присутни у нумеричком облику. Формула „СУМ“ и даље функционише јер користи нумеричку вредност у позадини, а не како се број форматира.

Зарез у низу формата даје сепаратор хиљада. Имајте на уму да ово морате ставити само једном у низ. Ако се број креће у милионима или милијардама, он ће и даље одвојити цифре у групе од 3

Нула у низу формата (0) је чувар места. Приказује цифру ако постоји или нулу. Његово позиционирање је веома важно како би се осигурала уједначеност са форматирањем

У низу формата, хасх знакови (#) неће приказати ништа ако нема цифре. Међутим, ако постоји број попут .8 (све децимале), желимо да се прикаже као 0.80 тако да се поравна с осталим бројевима.

Коришћењем једне нуле лево од децималне тачке и две нуле десно од децималне тачке у низу формата, то ће дати тражени резултат (0,80).

Да је само једна нула десно од децималне тачке, резултат би био „0,8“ и све би се приказало на једну децималу.

Коришћење низа формата за поравнање

Можда бисмо желели да видимо све децималне бројеве у опсегу поравнатим на њиховим децималним зарезима, тако да су све децималне тачке директно једна испод друге, без обзира на то колико места на децималном месту има на сваком броју.

Да бисте то урадили, можете користити знак питања (?) Унутар низа формата. Знак '?' Означава да се приказује број ако је доступан или размак

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "#, ## 0.00 ??"

Ово ће приказати ваше бројеве на следећи начин:

Све децималне тачке сада се нижу једна испод друге. Ћелија А5 има три децимална места и ово би нормално избацило поравнање, али коришћењем знака '?' Све се савршено поравнава.

Коришћење дословних знакова унутар низа формата

Можете додати било који дословни знак у низ формата претходећи му обрнуту косу црту (\).

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

Можда ћете такође желети да наведете да су бројеви у милионима у следећем примеру:

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "\ $#, ## 0.00 \ м"

Ово ће произвести следеће резултате на вашем радном листу:

Када користите обрнуту црту за приказ дословних знакова, не морате да користите обрнуту косу црту за сваки појединачни знак у низу. Можете користити:

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "\ $#, ## 0.00 \ милл"

Ово ће приказати „млин“ после сваког броја унутар форматираног опсега.

Већину знакова можете користити као литерале, али не и резервисане знакове као што су 0, #,?

Употреба зареза у низу формата

Већ смо видели да се зарези могу користити за стварање хиљада сепаратора за велике бројеве, али се могу користити и на други начин.

Користећи их на крају нумеричког дела низа формата, они делују као скалари хиљада. Другим речима, сваки број ће поделити са 1.000 сваки пут када се појави зарез.

У примерима података то приказујемо са показатељем да је у милионима. Уметањем једне зарезе у низ формата, можемо приказати те бројеве подељене са 1.000.

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "\ $#, ## 0.00, \ м"

Ово ће приказати бројеве подељене на 1.000, иако ће оригинални број и даље бити у позадини у ћелији.

Ако у низ формата ставите две зарезе, бројеви ће се поделити са милион

1 Табеле ("Лист1"). Опсег ("А1: А6"). НумберФормат = "\ $#, ## 0.00 ,, \ м"

Ово ће бити резултат помоћу само једне зарезе (поделите са 1.000):

Креирање условног обликовања унутар низа формата

Можете поставити условно обликовање на предњем крају програма Екцел, али то можете учинити и унутар свог ВБА кода, што значи да можете програмски манипулисати низом формата да бисте унели промене.

Можете да користите највише четири одељка у низу формата. Сваки одељак је омеђен тачком и зарезом (;). Четири одељка одговарају позитивном, негативном, нула и тексту

1 Опсег ("А1: А7"). НумберФормат = "#, ## 0.00; [Црвено]-#, ## 0.00; [Зелено]#, ## 0.00; [Плаво]"

У овом примеру користимо исте знакове хеша, зареза и нуле да обезбедимо хиљаде сепаратора и две децималне тачке, али сада имамо различите одељке за сваку врсту вредности.

Први одељак је за позитивне бројеве и по формату се не разликује од онога што смо већ видели.

Други одељак за негативне бројеве уводи боју (црвену) која се држи унутар пара углатих заграда. Формат је исти као за позитивне бројеве, осим што је испред додан знак минус (-).

Трећи одељак за нулте бројеве користи боју (зелену) унутар углатих заграда са нумеричким низом истим као за позитивне бројеве.

Последњи одељак је за текстуалне вредности, а све што је потребно је боја (Плава) поново у угластим заградама

Ово је резултат примене овог низа формата:

Можете ићи даље са условима унутар низа формата. Претпоставимо да сте хтели сваки позитиван број изнад 10.000 приказати као зелени, а сваки други број као црвен можете користити овај низ формата:

1 Опсег ("А1: А7"). НумберФормат = "[> = 10000] [Зелена]#, ## 0.00; [<10000] [Црвена]#, ## 0.00"

Овај низ формата укључује услове за> = 10000 постављене у угластим заградама, тако да ће се зелена користити само ако је број већи или једнак 10000

Ово је резултат:

Употреба разломака у обликовању низова

Разломци се не користе често у табелама, јер су обично једнаки децималама које су свима познате.

Међутим, понекад служе сврси. Овај пример ће приказати доларе и центе:

1 Опсег ("А1: А7"). НумберФормат = "#, ## 0" "долара и" "00/100" "центи" ""

Ово ће бити резултат:

Упамтите да, упркос томе што су бројеви приказани као текст, они су и даље у позадини као бројеви и на њима се могу користити све Екцел формуле.

Формати датума и времена

Датуми су заправо бројеви и на њима можете користити формате на исти начин као и за бројеве. Ако датум форматирате као нумерички број, видећете велики број лево од децималне тачке и број децималних места. Број лево од децималне тачке приказује број дана који почињу од 01. јануара 1900. године, а децимална места показују време на основу 24 сата

1 МсгБок формат (сада (), "дд-ммм-ггггг")

Ово ће форматирати тренутни датум тако да приказује '08 -јул-2020 '. Коришћење 'ммм' за месец приказује прва три знака назива месеца. Ако желите име целог месеца, користите „мммм“

У низ формата можете укључити времена:

1 МсгБок формат (сада (), "дд-ммм-ггггг хх: мм АМ/ПМ")

Ово ће приказивати '08 -јул 2020 13:25 '

„Хх: мм“ представља сате и минуте, а АМ/ПМ користи 12-часовни сат за разлику од 24-часовног сата.

Можете унети текстуалне знакове у низ формата:

1 МсгБок формат (сада (), "дд-ммм-ггггг хх: мм АМ/ПМ" "данас" "")

Ово ће приказати „08.-јул-2020 01:25 поподне“

Такође можете користити дословне знакове користећи обрнуту косу црту испред на исти начин као и за низове нумеричког формата.

Унапред дефинисани формати

Екцел има бројне уграђене формате за бројеве и датуме које можете користити у коду. Они углавном одражавају оно што је доступно на предњој страни за обликовање бројева, иако неки од њих превазилазе оно што је обично доступно у искачућем прозору. Такође, немате флексибилност у погледу броја децималних места, нити да ли се користе хиљаде сепаратора.

Општи број

Овај формат ће приказати број тачно онакав какав јесте

1 МсгБок формат (1234567,89, "Општи број")

Резултат ће бити 1234567,89

Валута

1 МсгБок формат (1234567.894, "Валута")

Овај формат ће додати симбол валуте испред броја, нпр. $, £ у зависности од вашег локалитета, али ће такође форматирати број на 2 децимална места и одвојити хиљаде зарезима.

Резултат ће бити 1.234.567,89 долара

Фикед

1 МсгБок формат (1234567.894, „Фиксно“)

Овај формат приказује најмање једну цифру лево, али само две цифре десно од децималне тачке.

Резултат ће бити 1234567,89

Стандард

1 МсгБок формат (1234567.894, "Стандард")

Ово приказује број са хиљаду сепаратора, али само на две децимале.

Резултат ће бити 1.234.567,89

Проценат

1 МсгБок формат (1234567.894, "Проценат")

Број се множи са 100 и додаје се симбол процента (%) на крају броја. Формат се приказује на 2 децимална места

Резултат ће бити 123456789,40%

Научни

1 МсгБок формат (1234567.894, "Научни")

Ово претвара број у експоненцијални формат

Резултат ће бити 1.23Е+06

Да не

1 МсгБок формат (1234567.894, "Да/Не")

Ово приказује „Не“ ако је број нула, у супротном приказује „Да“

Резултат ће бити „Да“

Тачно нетачно

1 МсгБок формат (1234567.894, "Тачно/Нетачно")

Ово приказује „Фалсе“ ако је број нула, у супротном приказује „Труе“

Резултат ће бити „Истина“

Укључено/Искључено

1 МсгБок формат (1234567.894, "Укључено/Искључено")

Ово приказује „Искључено“ ако је број нула, у супротном приказује „Укључено“

Резултат ће бити „Укључено“

Општи датум

1 МсгБок формат (сада (), "Општи датум")

Ово ће приказати датум као датум и време користећи АМ/ПМ нотацију. Начин приказа датума зависи од ваших поставки на Виндовс контролној табли (Сат и регија | Регион). Може се приказати као „мм/дд/гггг“ или „дд/мм/гггг“

Резултат ће бити „7.7.2020 15:48:25 ПМ“

Лонг Дате

1 МсгБок формат (Сада (), "Дуги датум")

Ово ће приказати дугачак датум како је дефинисано у Виндовс контролној табли (Сат и регија | Регион). Имајте на уму да не укључује време.

Резултат ће бити „уторак, 7. јул 2022.

Средњи датум

1 МсгБок формат (сада (), "средњи датум")

Ово приказује датум како је дефинисано у поставкама кратког датума дефинисаним локалним језиком на Виндовс контролној табли.

Резултат ће бити '07 -Јул-20 '

Кратак спој

1 МсгБок формат (сада (), "кратак датум")

Приказује кратак датум како је дефинисано у Виндовс контролној табли (Сат и регион | Регион). Начин приказа датума зависи од вашег локалитета. Може се приказати као „мм/дд/гггг“ или „дд/мм/гггг“

Резултат ће бити „7.7.2020.“

Дуго времена

1 МсгБок формат (сада (), "дуго")

Приказује дуго време како је дефинисано у Виндовс контролној табли (сат и регион | регион).

Резултат ће бити „4:11:39 ПМ“

Средње време

1 МсгБок формат (сада (), "Средње време")

Приказује средње време према дефиницији ваше локације на Виндовс контролној табли. Ово се обично поставља као 12-часовни формат користећи сате, минуте и секунде и формат АМ/ПМ.

Резултат ће бити '04: 15 поподне '

Недуго

1 МсгБок формат (сада (), "кратко време")

Приказује средње време како је дефинисано у Виндовс контролној табли (сат и регион | регион). Ово се обично поставља као 24-часовни формат са сатима и минутима

Резултат ће бити '16: 18 '

Опасности од коришћења унапред дефинисаних формата програма Екцел у датумима и временима

Употреба унапред дефинисаних формата за датуме и времена у програму Екцел ВБА веома зависи од поставки на Виндовс контролној табли, као и од тога на које је локалитете постављено

Корисници могу лако да промене ове поставке, а то ће утицати на то како су ваши датуми и времена приказани у Екцелу

На пример, ако развијете Екцел апликацију која користи унапред дефинисане формате у вашем ВБА коду, они се могу потпуно променити ако је корисник у другој земљи или користи другу локацију за вас. Можда ћете открити да се ширине колона не уклапају у дефиницију датума или да су на корисничком обрасцу контрола Ацтиве Кс, попут контроле у ​​комбинованом оквиру (падајуће), преуске да би се датуми и времена могли правилно приказати.

Морате узети у обзир где је публика географски када развијате Екцел апликацију

Кориснички дефинисани формати за бројеве

Постоји неколико различитих параметара које можете користити при дефинисању низа формата:

Цхарацтер Опис
Нулл Стринг Нема форматирања
0 Чувар места за цифру. Приказује цифру или нулу. Ако за ту позицију постоји цифра, она приказује цифру, иначе приказује 0. Ако има мање цифара од нула, добићете водеће или задње нуле. Ако иза децималног зареза има више цифара него нула, онда се број заокружује на број децималних места приказаних нулама. Ако је испред децималног зарема више цифара него нула, оне ће се нормално приказати.
# Чувар места за цифру. Ово приказује цифру или ништа. Ради исто као и чувар места нуле изнад, само што се водеће и крајње нуле не приказују. На пример, 0,75 би се приказало коришћењем нултих чувара места, али би то било 0,75 користећи # чувара места.
. Децимална тачка. Дозвољен је само један низ за формат. Овај знак зависи од поставки на Виндовс контролној табли.
% Проценат чувара места. Множи број са 100 и поставља знак % на место где се појављује у низу формата
, (зарез) Хиљаду сепаратора. Ово се користи ако се користе 0 или # чувара места и стринг за формат садржи зарез. Један зарез лево од децималног зареза означава заокруживање на најближу хиљаду. На пример. ## 0, Две суседне зарезе лево од сепаратора хиљада означавају заокруживање на најближи милион. На пример. ## 0 ,,
Е- Е+ Научни формат. Ово приказује број експоненцијално.
: (дебело црево) Раздвајач времена - користи се при форматирању времена за дељење сати, минута и секунди.
/ Раздвајач датума - ово се користи када се наводи формат за датум
- + £ $ ( ) Приказује дословни карактер.Да бисте приказали знак који није наведен овде, пре њега поставите обрнуту косу црту (\)

Кориснички дефинисани формати датума и времена

Сви ови знакови се могу користити у формату стринга приликом форматирања датума и времена:

Цхарацтер Значење
ц Приказује датум као ддддд и време као ттттт
д Прикажите дан као број без водеће нуле
дд Прикажите дан као број са почетном нулом
ддд Прикажите дан као скраћеницу (нед - суб)
дддд Прикажите пуно име дана (недеља - субота)
ддддд Прикажите серијски број датума као потпуни датум према Кратком датуму у међународним поставкама на контролној табли оперативног система Виндовс
дддддд Приказује серијски број датума као потпуни датум према Лонг Дате у међународним поставкама Виндовс контролне табле.
в Приказује дан у недељи као број (1 = недеља)
вв Приказује недељу у години као број (1-53)
м Приказује месец као број без водеће нуле
мм Приказује месец као број са водећим нулама
ммм Приказује месец као скраћеницу (јануар-децембар)
мммм Приказује пуно име месеца (јануар - децембар)
к Приказује квартал у години као број (1-4)
и Приказује дан у години као број (1-366)
ии Приказује годину као двоцифрени број
гггг Приказује годину као четвороцифрени број
х Приказује сат као број без водеће нуле
ХХ Приказује сат као број са почетном нулом
н Приказује минуте као број без водеће нуле
нн Приказује минут као број са почетном нулом
с Приказује други као број без водеће нуле
сс Приказује други као број са почетном нулом
ттттт Прикажите серијски број времена као комплетно време.
АМ ПМ Користите 12-часовни сат и прикажите АМ или ПМ за означавање пре или после подне.
ам ПМ Користите 12-часовни сат и користите ам или пм за означавање пре или после подне
А/П Користите 12-часовни сат и користите А или П за означавање пре или после подне
а/п Користите 12-часовни сат и помоћу а или п означите пре или после подне
wave wave wave wave wave