Makro v Exceli – ako nahradiť desatinné bodky za čiarky

od autora: | 6. októbra 2016

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ť.

Celkové hodnotenie

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *