< návrat zpět
MS Excel
Téma: Zaokrouhlení měny na 2 desetinná místa 
Zaslal/a Imh0tep 25.6.2020 10:15
Ahoj,
existuje nějaký rychlejší způsob, jak zaokrouhlit částky ve sloupci na dvě desetinná místa? Ve formátu buňky mám nastaveny 2 desetinná místa, nicméně excel počítá s číslem přesným tzn. včetně tisícin, desetitisícin apod.
jedná se mi v uvedeném příkladu o oblast D10:D200 s tím, že se mouhou vyskytovat prázdné řádky. Pro moje potřeby bude ve finále daná oblast dynamická, to už si ale ošetřím sám.
Jen mi to zaokrouhlení buňky po buňce přijde dost zdlouhavé. Neexistuje něco jako ROUND((Range"D10:D200),2)?
Private Sub CommandButton1_Click()
For Each cell In [D10:D200]
If cell = "" Then
cell.Value = ""
Else
cell.Value = WorksheetFunction.Round(cell.Value, 2)
End If
Next cell
End Sub
Příloha:
47050_zaokrouhleni.zip (70kB, staženo 14x)
elninoslov(25.6.2020 11:38)#047051 
Range("D10:D200").Value = Evaluate("=IF($D$10:$D$200<>"""",ROUND($D$10:$D$200,2),"""")")citovat
Imh0tep(25.6.2020 15:53)#047053 
Díky, funguje to dle očekávání. Domnívám se ale správně, že je ale toto řešení nepoužitelné v okamžiku, když je daná oblast definována dynamicky?
citovat
elninoslov(25.6.2020 16:06)#047054 
Veď to je plne dynamické. Som počítal, že si to upravíte ako ste vravel.
Takže príklad (dá sa napchať aj do 1 riadku):
Sub pokus()
Dim R As Long, PR As Long, PS As Integer, S As Integer, ADR As String
R = 10 'prvý riadok
S = 4 'prvý stĺpec
PR = 200 'počet riadkov
PS = 1 'počet stĺpcov
ADR = Cells(R, S).Resize(PR, PS).Address 'Adresa
Range(ADR).Value = Evaluate(Replace("=IF(?<>"""",ROUND(?,2),"""")", "?", ADR)) 'Vo vzorci sa za ? nahradí adresa
End Sub
EDIT:
Prípadne by som to upravil ešte pomocou IFERROR, pre prípad, že by tam bol aj text:
Range(ADR).Value = Evaluate(Replace("=IFERROR(IF(?<>"""",ROUND(?,2),""""),?)", "?", ADR)) 'Vo vzorci sa za ? nahradí adresacitovat