< návrat zpět

MS Excel


Téma: posun desetinné čárky rss

Zaslal/a 28.2.2019 14:51

Ahoj všem,
prosím o pomoc.....
lze nějak zautomatizovat posun desetinné čárky?
např. napíši do jakékoliv buňky třeba číslo 100,1 a potřebuji aby se mi automaticky posunula desetinná čárka o dvě do leva tj. 1,001
Předem moc děkuji

Zaslat odpověď >

#042879
avatar
A k čemu to je dobré?

Napadá mě jedině řešení přes makra a událost listu.citovat
#042884
elninoslov
Ako inak, nastáva tam mnoho problémov. Môže to byť prázdna bunka, vzorec, maticový vzorec, Boolean, dátum, čas, text, ...)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bunka As Range, H
Const POSUN_DES_MIEST = 2 '+X vľavo, -X vpravo, 0 nič

Application.ScreenUpdating = False
Application.EnableEvents = False

On Error Resume Next
For Each Bunka In Target.Cells 'Kontroluj všetky zmenené bunky
With Bunka
H = .Value 'Čiastočné zrýchlenie - kontrola hodnoty je rýchlejšia ako kontrola bunky

Select Case True
Case IsEmpty(H) 'je prázdna - nič
Case .HasFormula 'je vzorec (aj maticový) - nič
Case VarType(H) = vbBoolean 'je boolean - nič
Case IsDate(.Text) 'je čas - nič (nefunguje ak je stĺpec úzky natoľko, že sa zobrazia # mriežky, vtedy to považuje za číslo a čiarku posunie)
Case IsNumeric(H)
.Value = H / (10 ^ POSUN_DES_MIEST) 'je číslo (vynechá dátum) - posuň čiarku
End Select
End With
Next Bunka

If Err.Number <> 0 Then MsgBox "Počas úpravy desatinnej čiatky došlo k chybe." & vbNewLine & "Niektoré úpravy nemusia byť správne.", vbCritical, "Chyba"

Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
citovat
#042886
avatar
Moc se omlouvám, mé 1. zadání nebylo úplně přesné.
Znova a lépe. Mám sešit, ve kterém mám určitá data.
Ve sloupci D:D mám prázdné buňky, kam musím ručně doplňovat čísla, u těch čísel potřebuji automaticky posunout desetinnou čárku např. zapíši 100,8 a po odentrování se změní na 1,008
Moc děkuji.
Petrcitovat
#042888
avatar
Základní logika může být takováto, kód vložit na příslušný list, nastaveno pouze pro sloupec "D".
P.

Př.:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Target.Column = 4 Then
ActiveSheet.Range(Target.Address).Value = ActiveSheet.Range(Target.Address).Value / 100
End If

Application.EnableEvents = True

End Sub
citovat
#042889
avatar
Pro hromadné zadávání unifikovaných čísel je v excelu mód:

Soubor, možnosti, upřesnit, automaticky vkládat desetinou čárku

Není to moc praktické, nicméně, vkládají se čísla bez desetinné čárky.

Pokud se desetinná čárka vkládá, tak nechápu, proč se nevloží na rovnou na správném místě. Pokud jde o opis hromady čísel, lze je jistě vkládat v samostatném bloku, přepočítat a zkopírovat.

Změna hodnoty pod rukou není nápad, který bych doporučil.

Mimochodemm, napsat fungující makro není snadné, jak je vidět na uvedených ukázkách. Ani jedno nefunguje spolehlivě.citovat
#042890
avatar
Díky moc,funguje.....citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje