Bančno zaokroževanje ali Gaussovo zaokroževanje ali parno zaokroževanje ali …

Pa sem spet pri zaokroževanju 🙂 (zaokroževanje števil, zaokroževanje časovnih elementov), a slednje je res tako pomembno da se ga je potrebno večkrat zavedati.

In spet sem naletel na zanko. Že v prvem blogu o zaokroževanju sem opozoril, da se resen problem zaokroževanja pojavi samo takrat, ko se neko število nahaja natančno na sredini. Tedaj je vprašanje kam ga zaokrožiti – ali navzdol ali navzgor.

In v bančnem oz. finančnem sektorju v tem primeru zaokrožujejo – pazite sedaj (!) – na najbližje SODO število. Na prvi pogled se zdi to nesmiselno, celo čudno, a ima namen. Ideja je namreč v tem, da se statistično gledano, število včasih zaokroži navzgor (kadar je prvo sodo število večje), včasih pa navzdol (kadar je sodo število pač manjše).

In ravno to zagotavlja neko mero »poštenosti«, saj banka včasih zaokroži v svojo škodo, včasih pa v svojo korist in v splošnem se to izravna. Ravno zaradi tega se ta način zaokroževanja včasih imenuje tudi Gaussovo zaokroževanje.

Dobro, tu je vse ok in jasno, vprašanje pa je zakaj to omenjam. Odgovor pa je preprost in zanimiv. To omenjam zato, ker, čeravno je Excel prvenstveno namenjen uporabi v finančnih institucijah, ne zaokrožuje na opisan način :(.

No resnica je še bolj zmedena, saj Excel v tabelah zaokrožuje na en način, pri uporabi VBA procedure pa na drugega!!

Torej funkcija Round v Excelu v primeru števila, ki je točno na sredini le tega zaokroži navzgor, funkcija Round v VBA-ju pa število, ki je točno na sredini zaokroži na najbližje sodo število.

Razlika je preprosto vidna. Že si zapišete sledečo VBA funkcijo:

Function ZaokroziKotBanka(stevilo, pozicija)
   ZaokroziKotBanka = Round(stevilo, pozicija)
End Function

In potem v Excelovi tabel zapišete:
=ROUND(10,5;0)            -- rezultat 11
=ZaokroziKotBanka(10,5;0) -- rezultat 10

UPSI!

Dobro, res da je razlika zelo minorna in specifična, saj se pojavi samo in izključno tedaj, ko je neko število točno na sredini… a dobro je da se tega zavedate.

Kako torej Excel prepričati da zaokrožuje po »bančnih« standardih?

  1. Najlažje z uporabo zapisane VBA funkcije.
  2. Če VBA-ja ne morete/smete uporabiti pa je potrebno zapisati malce kompleksnejšo funkcijo zaokroževanja…
    =IF(MOD(100*B2;1)=0,5;IF(ISODD(INT(100*B2));ROUNDUP(B2;2);ROUNDDOWN(B2;2));ROUND(B2;2))

Zanimivo kajneda ;)…

MExcel.biz

Vabljeni na premierno otvoritev nove blagovne znamke MExcel, ki se skriva na spletišču www.mexcel.biz. Gre za Excelovega pomočnika, čarovnika, ko vam bo skrajno poenostavil združevanje tabel v Excelu.

Programski dodatek MExcel bo v prihodnosti rastel in pridobival več orodij in čarovnikov a že v prvi izdaji ponuja izjemno orodje za združevanje tabel, s pomočjo katerega lahko podatke združite do 10x hitreje kot to sicer omogočajo vgrajene Excelove tabele.

Prednosti

  • Združevanje po več ključnih podatkih hkrati
  • Združevanje podatkov tako po horizontali kot vertikali
  • Dodajanje nezdruženih podatkov v rezultat
  • Neobčutljivost na format ključnih podatkov
  • Preprostost uporabe – ne potrebujete znanja Excela, saj lahko s pomočjo čarovnika tabeli združi vsak uporabnik
  • Nad veliko množico podatkov (tabele večje od 500.000 zapisov) je združevanje do 10x hitrejše kot v kombinaciji funkcij VLOOKUP ali INDEX in MATCH!

Slabosti

  • “Slabost” čarovnika je samo v dejstvu, da ga Excel ne pozna in ga morate torej naknadno doinstalirati… A instalacija je skrajno preprosta in intuitivna. 🙂

Vabilo

Vabim vas torej, da si orodje naložite, ga preizkusite in napišete svoje mnenje…

Excel in datoteke z veliko listi

Kadar imamo v Excelu veliko listov se lahko med njimi kar hitro izgubimo, še težje pa se med njimi sprehajamo. A orodje, ki je namenjeno sprehodu med listi je na voljo že mnogo časa, le malo uporabnikov ve zanj.

Na dnu Excelovega okna se, skrajno levo, nahaja majhen trak oz. skupek štirih gumbov, ki jih uporabite za premik na prvi list, prejšnji list, naslednji list ali pa zadnji list v zvezku.

A to ni vse; če na omenjene gumbke z miško desno-kliknete se vam odpre seznam, kjer so izpisana imena vseh listov in tako se lahko na poljuben list prestavite še hitreje in lažje…

Pretvoriti PDF dokument v Word

Pretvorba PDF dokumentov v Word (Excel) je zelo pogosta želja uporabnikov in nekaj zakar se velikokrat obračate name.

Da bi ne zašel v prevelike podrobnosti naj samo povem, da v splošnem pretvorba iz PDF v nekaj drugega ni možna. Seveda obstaja program podjetja Adobe (to je podjetje, ki je postavilo PDF standard), ki je neverjetno drag in v principu omogoča tudi omenjene konverzije a ob tem obstajajo sledeče težave:

  1. Program je zelooo drag
  2. PDF format je že tako zlorabljen, da nekaterih dokumentov tudi takšen program ne more pretvoriti v enakovreden Word format (poruši se oblika)
  3. …in še kaj bi se našlo ;)…

Rešitev 1

Če torej odpade tista najboljša in najdražja rešitev moramo poseči po čem drugem in najlepše ter najlažje je, da v PDF dokumentu označimo celotno vsebino in jo prekopiramo v Word – seveda izgubimo obliko – tu ni kaj – a imamo vsaj vsebino in je ni potrebno prepisovati.

Rešitev 2

Mnogokrat pa se teksta iz PDF dokumenta ne da pridobiti (pa ne govorim tukaj nujno o zaščitenih dokumentih, katerih vsebine ni dovoljeno kopirati!) – tukaj je govora o čisto navadnih PDF dokumentih, ki jih proizvaja tisoče in tisoče različnih programov, a so slednji sestavljeni tako, da namesto teksta ob kopiranju dobite samo vprašaje oz. neberljive znake. In kaj sedaj?

No, v tem primeru pa lahko uporabite tehniko OCR (Optical Character Recognition) oz. tehniko strojne pretvorbe slik v besedilo. V splošnem bi to izgledalo takole: Natisnete PDF, liste z optičnim bralnikom (scanner) preberete v obliki slik in te slike obdelate z OCR programom, ki iz njih izlušči tekst.

Kot vidite smo šli pravzaprav iz dežja pod kap, saj bi morali sedaj najprej celoten dokument natisniti, potem kupiti optični bralnik in liste prebrati nazaj v računalnik ter nato uporabiti še neskončno drag OCR program da slike pretvorimo v besedilo.

No verjetno sumite, da bi bloga ne pisal, če bi ne obstajala krajša in cenejša (beri zastonj) pot. Pot skrajšamo, če namesto tiska in branja dokumentov nazaj preprosto direktno pretvorimo PDF v sliko in namesto zelo dragega OCR programa uporabimo zastonj spletne rešitve.

Pretvorbo PDF dokumenta v sliko lahko opravite tukaj http://docupub.com/pdfconvert/, zastonj optično branje pa tukaj: http://www.free-ocr.com/ Pa veselo na delo! :):)

Ah da; kot vidite lahko na takšen način preprosto zaobidete tudi zaščito dokumentov, kar pomeni, da lahko na takšen način kradete – namen tega nasveta nikakor ni slednje – torej namen tega zapisa ni kraja temveč pretvorba dokumentov, za katere imate pravico to početi, a so slednji zapisani tako, da tega pač drugače ne omogočajo!

Zaokroževanje časa

Zaokroževanje različnih elementov je v Excelu pogosta naloga in tudi vprašanja s to tematiko se zatorej večkrat pojavljajo. Zadnjič se je na forumu pojavilo vprašanje, kako zaokrožiti čas na polovico ure.

O zaokroževanju sem v blogu že pisal in tedaj tudi dokaj podrobno zapisal kako lahko neko število zaokrožimo na poljuben večkratnik drugega števila. Pokazal sem torej kako neko število zaokrožiti na npr. večkratnik števila 3. Glede na to znanje je rešitev preprosta. Čas torej moramo zaokrožiti na najbližjo polovico ure.

Toda čas ni število… Ali pač? No; kot sem v blogu že dokazal, je tudi čas v Excelu navadno število. Iz obeh člankov v blogu lahko zatorej izluščimo, da je čas v Excelu prikazan kot število in števila znamo zaokroževati!

Splošna formula, ki izhaja iz bloga o zaokroževanju je torej sledeča:

=Round(čas / pol_ure; 0) * pol_ure

Vprašanje torej ostaja samo koliko je pol_ure? Spet glede na zapis v blogu vemo, da je en dan predstavljen kot število 1. Ker ima dan 24 ur je torej ena ura predstavljena kot 1/24 in ker ima en dan 48 »pol ur«, torej pol ure predstavljeno kot 1/48.

Glede na zapisano torej že imamo pravilno formulo:

=Round(čas / (1 / 48); 0) * (1 / 48)

Seveda pa z malo znanja osnovnošolske matematike oz. računanja z ulomki vemo da A * (1 / B) == A/B in A / (1 / B) == A*B, zatorej lahko končno formulo zapišemo lepše:
=Round(čas * 48; 0) / 48

Glede na zapisanoformulo je torej zaokroževanje po času skrajno preprosto:
Na 5  minut:  =Round(čas * 288; 0) / 288
Na 10 minut:  =Round(čas * 144; 0) / 144
Na 15 minut:  =Round(čas * 96 ; 0) / 96
Na 30 minut:  =Round(čas * 48 ; 0) / 48
Na 1    uro:  =Round(čas * 24 ; 0) / 24
Na 2    uri:  =Round(čas * 12 ; 0) / 12

😉

PDF dokumenti v Office 2003

S prihodom MS Pisarne 2007 se je MS odločil tudi za neposredno podporo PDF dokumentov. To pomeni, da lahko v Wordu (Excelu…) izdelate PDF dokument preprosto tako, da izberete opcijo Shrani kot PDF preprosto izdelate PDF dokument.

Problem pa je seveda v dejstvu, da Word in Excel (pred verzijo 2003) ne znata izdelati PDF dokumentov… In kaj sedaj?

Profesionalna rešitev

Dobro; seveda obstaja prava, profesionalna in seveda zelo draga rešitev, kjer kupite program Adobe Acrobat in z njim izdelujete profesionalne PDF dokumente iz poljubnega programa ter s poljubnimi nastavitvami, opcijami…

Definitivno zlata opcija a na žalost zlata tudi v denarju.

Zastonj obvoz

V kolikor ne potrebujete ravno 1001 opcije PDF dokumentov, temveč želite izdelati PDF dokument, ki ga lahko pošljete komurkoli in ga bo slednji lahko neovirano bral in natisnil pa lahko posežete po zastonjski rešitvi.

Kako deluje zastonj obvoz?

Rešitev je znana že mnogo let in v tem času jo je ponudilo tudi mnogo podjetij. Ideja pa je v tem, da na vaš računalnik namestite navidezen tiskalnik (to je torej tiskalnik, ki v resnici ne obstaja, le vaš računalnik misli, da je tam 🙂 ). Ta navidezni tiskalnik pa ne tiska na papir, temveč tiska v PDF dokument. Izhod tiskalnika torej ni list papirja temveč PDF dokument.

Kot je vidno na sliki s to rešitvijo dobite še celo več kot vam nudi MS Pisarna 2007 (2010), zato jo lahko uporabite četudi že imate »nov« Word oz. Excel. S pomočjo navideznega tiskalnika lahko namreč natisnete PDF dokument iz poljubnega programa, ki zna tiskati.

Preprosto v programu izberete opcijo Tiskaj in kot tiskalnik izberite navidezni PDF tiskalnik. V tem trenutku vas bodo Okna vprašala za ime datoteke in po pritisku gumba OK vas bo na disku čakala nova PDF datoteka z izbrano vsebino.

Kako do navideznega PDF tiskalnika

Kot rečeno že v uvodu je takšne programske opreme kar nekaj in spodaj vam podajam nekatere povezave do nagrajenih programov (vsi omenjeni so dobili nagrade različnih računalniških revij in je praktično vseeno katerega izberete):

mRačuni 2003 in PDF dokumenti

mRačuni v verziji 2003 ne znajo izdelovati PDF dokumentov in zatorej lahko uporabite omenjen obvoz ter vsak račun natisnete na takšen virtualni tiskalnik ter s tem dobite PDF obliko računa natanko tako kot vam to nudi program mRačuni v verziji 2007 oz. 2010.

Razvoj Excelovih dodatkov v .NET okolju

Zadnjič smo si ogledali nekatere izmed možnosti razvoja Excelovih dodatkov, danes pa se bom omejil samo na razvoj v .NET okolju in podrobneje predstavil opcije na tem področju.

Seveda ne bom opisal vseh možnosti saj to niti ni mogoče. Pa tudi sicer tale zapis ni neka poglobljena študija temveč bolj moj osebni vpogled v tehnologije, ki sem jih preizkusil.

VSTO

VSTO (Visual Studio Tools for Office) je MS tehnologija za razvoj Office dodatkov. Preko VSTO lahko razvijate tako dodatke za Excel kakor tudi za vse preostale produkte za Office.

Prednosti

  • Podprta s strani MS
Slabosti

  • Za razvoj potrebujete Visual Studio 20xx Professional ali še višjega
  • Za vsako aplikacijo (Excel, Word…) potrebujete lasten projekt
  • Težko razvijate dodatek ki bi tekel na različnih verzijah Excela (vsaka verzija svoj dodatek)

Excel-DNA

Excel DNA je čudovito orodje in ga priporočam vsakemu, ki želi razvijati dodatke za Excel.

Prednosti

  • Zastonj
  • Ne potrebujete Visual Studia za razvoj, dovolj je .NET prevajalnik
Slabosti

  • Težko razvijate dodatek ki bi tekel na različnih verzijah Excela (vsaka verzija svoj dodatek)
  • Primeren izključno samo za razvoj Excelovih dodatkov, na pa tudidodatkov za druge Office programe

Add-in Express

Add-in Express ima glede na Excel-DNA eno veliko prednost in eno manjšo pomanjkljivost. Njegova velika prednost je zmožnost razvoje ene aplikacije za VSE verzije Excela hkrati, pomanjkljivost pa je da (za razliko od Excel-DNA) ni zastonj.

Prednosti

  • En projekt za vse verzije Excela hkrati
  • Preprost za uporabo
Slabosti

  • Ni zastonj

Primerjava

Ko primerjate omenjene produkte je potrebno vedeti, za katero verzijo Excela boste dodatek razvijali in katero verzijo Visual Studia uporabljate.


Kako brati sliko?

Vsak oblaček prikazuje ali lahko v izbranem okolju razvijate dodatek. Ker rdečega krogca (VSTO) ni narisanega pod Visual Studio Express to pomeni, da s to različico v okolju VSTO ne morete razvijati. Velikost oblačka pa prikazuje čez koliko verzij Excela lahko greste brez spremembe kode.

Glede na prikaz v sliki se najslabše odreže VSTO. Da bi lahko razvijali s slednjim morate imeti ustrezno verzijo Visual Studia. To je torej najslabša izbira.

Če izberete Excel-DNA pomeni, da lahko razvijate v poljubni različici Visual Studia, vendar morate imeti za vsako verzije Excela lasten projekt. Tu moram opozoriti, da lahko tudi v okoljih VSTO in Excel DNA razvijate dodatek, ki teče tako na verziji 2003 kot na 2007, vendar je potrebno vložiti kar nekaj truda.

Na drugi strani pa je Add-in Express, kjer pa lahko v enem projektu razvijate za vse verzije Excela hkrati.

Kaj torej izbrati

Po mojem mnenju je odločitev dokaj preprosta. VSTO definitivno odpade, ker nima nobene prednosti. V kolikor nimate potrebe po razvoju za več verzij Excela potem izberite Excel-DNA, ki je super produkt in povsem zastonj.

V kolikor razvijate za več verzij Excela hkrati pa se lahko potrudite in rešitev vseeno razvijate s pomočjo Excel-DNA ali pa vložite nekaj denarja in izberete produkt Add-in Express, saj z nakupom slednjega dobite tudi možnost razvoja dodatkov za druge programe v okolju Office (Word, Excel…)

Razvoj dodatkov za Excel

Ko razvijamo dodatke za Excel se prej ali slej srečamo s problemom vzdrževanja programske kode. Na izbiro imamo namreč kar nekaj različnih načinov in okolij za razvoj dodatkov.

Na eni strani imamo VBA, ki je vgrajen v večino Office produktov, na drugi strani imamo programski jezik C in WIN API ter COM, na tretji pa .NET tehnologijo in COM.

VBA

Vsekakor je se potrebno pred kakršnimkoli resnim razvojem za MS Office dodobra seznaniti z programskim jezikom VBA. Razvoj v VBA-ju je nekako najlažji izmed vseh načinov in ima mnogo prednosti:

VBA Prednosti

  • VBA bazira na programskem jeziku BASIC, ki je zelo preprost jezik
  • Zelo dobra podpora znotraj vseh Office programov
  • Vvečino problemov nam reši vgrajeno snemanje makrov – če želite kaj postoriti, začnete s snemanjem makra in ga nato razvijate dalje
  • VBA urejevalnik nam preko vgrajenega ‘InteliSence’-a aktivno in obilno pomaga pri programiranju.
  • Programska koda se ne prevaja, temveč interpretira, kar je za razvoj dobrodošlo, saj lahko programsko kod spreminjamo med razhroščevanjem programa (glej spodaj)

VBA Slabosti

  • Programska koda je zapakirana v posamezen dokument (Excelov XLS ali XLSM oz. XLA in XLAM) kar pomeni slab nadzor nad programsko kodo
  • Programske kode ni možno dajati v repozitorije programske kode
  • Otežena je souporaba kode v več projektih saj VBA ne pozna koncepta knjižnic
  • Programska koda se ne prevaja temveč interpretira (glej zgoraj), kar je lahko slabost, saj se ob prevajanju odkrijejo mnoge napake.
  • Preko VBA ne moremo storiti vsega – določene stvari lahko spreminjamo, popravljamo, dograjujemo samo preko knjižnic v C oz. C++ jezikih.

C / C++

Izmed vseh izbir je to najtežja pot, ki ima glede na naslednjo možnost, torej razvoj v .NET-u eno slabost in eno prednost

C / C++ prednosti

  • Najhitrejša koda in največja možnost nadzora nad načinom izvajanja

C / C++ slabosti

  • Zelo zapleten in dolgotrajen razvoj, slaba (zelo slaba!) literatura

.NET

Za razvoj v .NET-u pa imamo več možnosti, ki so prikazane spodaj.

.NET Prednosti

  • Možna uporaba knjižnic
  • Možna uporaba vseh znanj pridobljenih na področju –NET razvoja vključno z tisiči in tisoči objektov, ki so napisani zanj
  • Glede na prejšnjo točko seveda tudi preprosta možnost povezav do podatkovnih baz, spletnih storitev…
  • Popoln nadzor nad programsko kodo in možnost uporabe repozitorijev programske kode

.NET Slabosti

  • Neintuitivni razvoj
  • Težak dostop do ustrezne literature za dostop do Office automatization objektov

Oblikovanje celic v Excelu – kode za datum in čas

V enem izmed prejšnjih prispevkov smo si ogledali kako lahko v Excelu definirate lasten izgled podatkov v celicah. V omenjenem prispevku pa smo se omejili samo na določanje oblike numeričnih podatkov.

Seveda pa pozna Excel tudi posebne kode za oblikovanje datumov in časov in v tem prispevku si bomo zatorej ogledali slednje.

Oblikovni znaki za datume in čase

Tabela oblikovnih znakov za datume:

Znak Pomen
m Izpiše mesec brez vodilne ničle, torej 1 do 12
mm Izpiše mesec z vodilno ničlo, torej 01 do 12
mmm Izpiše tričrkovno okrajšavo za mesec, torej jan do dec
mmmm
Izpiše ime meseca januar do december
d
Izpiše dan v mesecu brez vodilne ničle, torej 1 to 31
dd
Izpiše dan v mesecu z vodilno ničlo, torej 01 to 31
ddd
Izpiše tričrkovno okrajšavo za dan v tednu(!), torej pon do ned
dddd
Izpiše dan v tednu(!), torej ponedeljek do nedelja
yy
Izpiše dvomestno leto (torej brez 20 iz 19 spredaj)
yyyy
Izpiše vse 4 cifre v letu

Tabela oblikovnih znakov za čase:

Znak Pomen
s Sekunde brez vodilnih ničel 0 do 59
ss Sekunde z vodilnimi ničlami 00 do 59
m Minute brez vodilnih ničel 0 do 59
mm
Minute z vodilnimi ničlami 00 do 59
h
Ure brez vodilnih ničel 0 do 23
hh
Ure z vodilnimi ničlami 00 do 23

Primeri

Ker je razlaga suhoparna sem vam spet pripravil datoteko, kjer se lahko po mili volji igrate z nastavitvami … 🙂

<datoteka s primeri>

Oblikovanje celic v Excelu – kode za tekst

V enem izmed prejšnjih prispevkov smo si ogledali kako lahko v Excelu definirate lasten izgled podatkov v celicah. V omenjenem prispevku pa smo se omejili samo na določanje oblike numeričnih podatkov.

Seveda pa pozna Excel tudi posebne kode za oblikovanje teksta in v tem prispevku si bomo zatorej ogledali slednje.

Oblikovni znaki za besedilo

Tabela znakov za oblikovanje besedila:

Znak Pomen
$ + / – ( ) : presledek Ti znaki se izpišejo na mestu, kjer so zapisani
\<znak> Vsem preostalim znakom (torej znakom, ki niso napisani zgoraj) je potrebno dodati predpono \ ali pa jih zapreti med dvojna narekovaja, kot je prikazano spodaj
“besedilo” Izpiše se besedilo
*
Ta koda zapiše znak, ki ji sledi tolikokrat, da zapolni celotno širino celice (zelo uporabno!)
@ Izpiše vsebino kot tekst

Primeri

Ker je razlaga suhoparna sem vam spet pripravil datoteko, kjer se lahko po mili volji igrate z nastavitvami … 🙂

<datoteka s primeri>