Sziasztok!
Következőben szeretnék segítséget kérni:
MS excellel húzunk be egy adatbázisból adatokat, mely lekérdezéskor a számokban a tizedes ponttal jelölődnek és szövegként értelmezi az Excel. Vannak egészek, egynél kisebb és nagyobb tört számok.
A cél, hogy a pontból vessző, a szövegből szám legyen és az Excel így is értelmezze. A gond, úgy tűnik, hogy a makró különböző locale beállításokat használ mint a grafikus felület és nem találom a kettő között az átjárót. (Ebbe belefutottam már korábban CSV export kapcsán is)
Adat példa:
DATA
0
0.027
2.579401635510707
-1
Se a find and replace, se replace nem működik az 1-nél nagyobb számoknál, mert az átalakításnál a ","-t ezres jelölőnek veszi, így pl a fenti 2.579401635510707 számból 2 579 401 635 510 707 lesz.
Amit próbáltam:
- először eléfűzni egy betűt, hogy mindenképp stringként értelmezze, utána replace, majd a betű levágása, szintúgy a fenti eredményt hozza.
- Application.UseSystemSeparators / Application.ThousandsSeparator / Application.DecimalSeparator változók állítgatása
- agybaj
28. nem működő verzió:
Range(data_cell).Value = "t" + Left(CStr(Range(data_cell).Value), 5)
Range(data_cell).Select
Selection = Replace(Range(data_cell).Value, ".", ",")
ActiveCell.Value = Mid(ActiveCell.Value, 2, Len(ActiveCell.Value) - 1)
Remélem van köztetek Excel guru :)
- 811 megtekintés
Hozzászólások
Azt esetleg probaltad ,hogy magaban az excelben beallitod mit szeretnel hasznalni?
Options ---> Advanced -----> Use system separators uncheck
Decimal separator beallit
Thousands separator beallit
- A hozzászóláshoz be kell jelentkezni
Szia! Nem, de az vele a problémám, hogy ezt akkor minden gépen át kéne állítani. Nem tudom megbecsülni máshol máskor másnál milyen gondokat okozna. Ezért próbálnám Excel oldalon megoldani. Nem ezt állítaná amúgy a UseSystemSeparators = False?
- A hozzászóláshoz be kell jelentkezni
Hogyan kerülnek be az adatbázisból az adatok az Excelbe most?
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Szia! SQL Adatbázisban vannak ODBC-n át jönnek. Sajnos az adatbázis formátumához nem tudok hozzányúlni. Esetleg lehet arra megoldás, h lekérdezéskor változzon a formátum?
- A hozzászóláshoz be kell jelentkezni
Nyilván függ attól, hogy milyen Excel verziót használsz.
Nálam (16.0.11126.20234) így megy:
-Adatok/Adatok beolvasása/Más forrásból/ODBC adatbázisból
-itt konfigurálod az ODBC kapcsolatot, megjelenik a Power Query editor
-A kérdéses oszlop tetején a típust szövegesre állítod
-cseréled a "."-ot ","-re
-A típust tizedestörtre állítod
-kész.
Ugyanez Power Query-ül:
let
Forrás = /* ez itt az ODBC kapcsolat */,
#"Típus módosítva" = Table.TransformColumnTypes(Forrás,{{"DATA", type text}}),
#"Érték felülírva" = Table.ReplaceValue(#"Típus módosítva",".",",",Replacer.ReplaceText,{"DATA"}),
#"Típus módosítva1" = Table.TransformColumnTypes(#"Érték felülírva",{{"DATA", type number}})
in
#"Típus módosítva1"
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Szia!
Megpróbáltam, nem jutottam a végére (gépészmérnök vagyok), a meglévő kapcsolatot elve csak Microsoft Queryben tudjuk szerkeszteni. Mindenesetre lett megoldás. Köszönöm a segítséget!
- A hozzászóláshoz be kell jelentkezni
Nem vagyok guru, de simán csak a CStr függvény használata nem elég?
- A hozzászóláshoz be kell jelentkezni
Szia!
Végül ez vezetett a megoldáshoz:
Először szöveggé kell alakítani, majd azt visszaolvasva (a VBA értelmezése miatt a . lesz a tizedesvessző, így az érték jól tárolódik) számmá konvertálható majd visszaírva már az Excel beállított tizedes elválasztóját használja:
Range(data_cell).Value = CStr(Range(data_cell).Value)
Range(data_cell).Value = Round(CDbl(Range(data_cell).Value), 3)
- A hozzászóláshoz be kell jelentkezni