< návrat zpět

MS Excel


Téma: Ako nahradit bodku VBA rss

Zaslal/a 11.5.2016 22:37

Dobrý deň
viete poradiť ako upraviť:

Columns("D:D").Select
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

v stĺpci D sú čísla bez formátovania a oddelene tisícky "." , ale makro vyhodí bodku aj čiarku. Predpokladám, že preto že USA má bodku ako desatinu čiarku. Dá sa to nejak jednoducho opraviť aby vyhodil bodku ale desatinna ciarka ostala?
ĎAkujem

Zaslat odpověď >

#031488
avatar
Čo to znamená "číslo bez formátovania"? 4
Normálne sa zvykne dávať príloha. 10citovat
#031489
elninoslov
Ak tie dáta importujete z nejakého súboru, tak tam mâte možnosť zvoliť oddeľovače.
Z Vašeho príspevku som tiež nepochopil, či bunka obsahuje aj bodku (tisíce) aj čiarku (desatiny), alebo 2 bodky...
Záleží na tom ako to presne máte, vyššie menovaný prípad by sa dal aj pomocným dočasným stĺpcom
=VALUE(SUBSTITUTE(D1;".";""))
=HODNOTA(DOSADIT(D1;".";""))
citovat
#031490
avatar
Mám dojem, že tazatel má zmatek v pojmech. Pokud je v buňce opravdu číslo, pak v něm žádné čárky, tečky ani mezery nejsou. Jde o oddělovače, které do číselné hodnoty buňky (.Value) dodá její formátování (podle nastavení nainstalované aplikace Excel). Pokud takové znaky budu hledat ve vlastnosti .Value, nic nenajdu (našel bych je ale ve vlastnosti .Text).
Jakmile se výše zmíněné znaky stanou skutečnou součástí vlastnosti .Value, mám k dispozici znakový řetězec, který může mít numerický obsah (v buňce je pak text, nikoliv číslo). Pak mohu takové znaky hledat, případně měnit. Pokud takový řetězec chci do buňky vložit, může ho (ale také nemusí) buňka pochopit jako číslo. To záleží na tom, jak by dopadla pro daný řetězec funkce IsNumeric.
Klasický bordel vzniká při nevhodném importu dat do českého Excelu z externích, zejména anglosaských zdrojů. Dodatečná náprava bývá obtížná a někdy dokonce pro méně zdatného uživatele nemožná. Velmi proto doporučuji řešit otázku obsahu dat už při samotném importu (Data / Načíst externí data), kde lze určit, jak mají být vstupní data interpretována. Postup, uvedený v dotazu, je klasickou ukázkou pozdní lítosti.citovat
#031491
avatar
Vzpomněl jsem si na fintu, kterou jsem z nouze kdysi vymyslel (a později zase plynule zapomněl). Když jsem si jist, že by originální anglický Excel data importoval správně, stačí, abych v Možnostech na dobu importu vypnul možnost "použít oddělovače ze systému". Zobrazení numerických separátorů tím přejde na anglický režim. V tomto režimu provedu nahrání zdravých anglických dat. Když následně Excel vrátím do původního stavu, mám zpět tuzemské numerické separátory, a to i v importovaných datech.
Pokud by vám takový postup vyhovoval, můžete také použít následující softwarový přepínač, který změnu tam i zpátky vyřídí:

Sub Prepinac()
Dim DekSep As Boolean, Kec As String
DekSep = Application.UseSystemSeparators
Application.UseSystemSeparators = Not DekSep
Kec = "Excel přepnul desetinný znak na "
If DekSep Then
Kec = Kec & "desetinnou tečku!"
Else
Kec = Kec & "desetinnou čárku!"
End If
MsgBox Kec, vbInformation, "PŘEPÍNAČ SEPARÁTORŮ"
End Sub
citovat
#031493
avatar
@vovka.
Presne tak.
Keby zadávateľ dal prílohu, tak by som nemusel špekulovať, či ide o číslo alebo o text. A teda som ani nešpekuloval. 5citovat
#031506
avatar
Je to chyba v excelu.

Zkus makro:


Sub Makro()
Dim c As Range
Dim s As String

Columns("D:D").Select
Set c = Selection.Find(What:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False)
s = c.Address
If Not c Is Nothing Then
Do
c.Value = CDbl(Replace(c.Value, ".", "", compare:=vbBinaryCompare))
Set c = Selection.FindNext(c)
Loop Until c.Address = s
End If
End Sub
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