Táto úloha ma inšpirovala z dôvodu, že pracovníci vo firmách riešia import dát z informačných systémov, kde v číslach namiesto desatinných čiarok dostanú desatinné bodky. Cieľom je rýchlym a elegantným riešením prekonvertovať tieto „čísla“ na reálne čísla. Bežne môžeme použiť nahradenie textu (Karta Home > Find&Select > Replace), ale v niektorých prípadoch môže dôjsť k výraznej zmene čísla pri jeho čísla (napr. číslo s desatinnými miestami zmení na celé).
Práve pre tento prípad som pripravil nasledujúce makro.
Súbor s riešením je samozrejme k dispozícii na stiahnutie kliknutím sem. Funguje to tak, že po otvorení je potrebné vyznačiť údaje, ktoré obsahujú desatinné bodky, potom makro s názvom NahradDesatinneBodkyZaCiarky spustíme klávesovou skratkou CTRL + SHIFT + N alebo napr. prostredníctvom karty View kde úplne napravo nájdeme Macros > View Macros, príp. klávesovou skratkou ALT + F8. Prostredníctvom príkazu View Macros nám Excel zobrazí nasledovné okno, kde makro NahradDesatinneBodkyZaCiarky spustíme prostredníctvom Run.

Pozor, ak Vám makro v Exceli nejde spustiť, skúste si všimnúť, či ich máte povolené, čo Excel informuje notifikačným panelom v hornej časti, vyzerá to nasledovne:

Je potrebné zvoliť Enable Content 🙂
Pre tých, ktorí sa učia programovať v Microsoft Excel VBA uvádzam zdrojový kód spolu s poznámkami, ktorý som použil:
Sub NahradDesatinneBodkyZaCiarky()
' NahradBodkyZaCiarky Macro
'
' Deklaracia premennych cell a commaPosition
Dim cell As Range
Dim commaPosition As Integer
For Each cell In Selection
' Najprv zistime ci bunka obsahuje desatinnu bodku
commaPosition = InStr(cell.Value, ".")
' Ak ano, tak este zistujeme ci aktualna bunka je prazdna, ak nie, potom ...
If commaPosition > 0 And Not IsEmpty(cell) Then
' ... nahradime desatinne bodky za ciarky a pripocitame 0, aby sme prekonvertovali text na cislo
cell.Value = Replace(cell.Value, ".", ",") + 0
End If
Next cell
End Sub
Ak by ste mali otázky alebo pripomienky k tomuto makru, píšte prosím do komentárov alebo chatu, príp. ak máte záujem o školenie Excel VBA, neváhajte ma prosím kontaktovať.