< návrat zpět

MS Excel


Téma: Číselné formáty ze systému SAP rss

Zaslal/a 9.9.2016 10:28

Zdravím všechny,
nedaří se mi načíst VBA makrem do Excelu číselné hodnoty z Excelovské tabulky, vytvořené systémem SAP. Část je uložena jako číslo, část jako text, pod 2 formáty (General a #,##0). Oddělovač desetin je ",", oddělovač tisíců je "." Některé hodnoty se načtou dobře, přitom ale "podobné" hodnoty (zejména s nulami na konci čísla) špatně.
Pokud s tím má někdo zkušenost, poslal bych mu na jeho e-mail zmíněný SAP-ový soubor.
Děkuji za pomoc!

Zaslat odpověď >

Strana:  1 2   další »
#032747
avatar
Pošlete dostatečný vzorek dat s komentářem. Paskvily SAPu mám moc rád :-) konference@excelplus.netcitovat
icon #032748
avatar
V dobách, kedy som pracoval so SAPom, mi stačilo nastaviť oddeľovače tisícov a desatinných miest rovnako, ako som mal nastavené v Exceli. Kolízie pri spracovaní SAPích tabuliek v Exceli som týmto spôsobom úspešne eliminoval.citovat
#032749
avatar

AL napsal/a:

V dobách, kedy som pracoval so SAPom, mi stačilo nastaviť oddeľovače tisícov a desatinných miest rovnako, ako som mal nastavené v Exceli. Kolízie pri spracovaní SAPích tabuliek v Exceli som týmto spôsobom úspešne eliminoval.

Také mne to napadlo, ale nejsem v SAPu zběhlý, ani nejsem administrátor, mohu si to sám jako uživatel v SAPu někde nastavit?citovat
icon #032750
avatar
jj, môžeš. Mám dojem, že stačí na úvodnej obrazovke, po tom, čo sa prihlásiš do SAPu a vidíš tú stromovú štruktúru vľavo a vpravo typicky logo SAPu, kliknúť pravým tlačítkom niekde do tej pravej časti okna a vybrať z kontextového menu príslušnú voľbu. Musíš hľadať, SAP nemám, ale pokiaľ ma pamäť neklame, tak týmto spôsobom sa dostaneš k tej zmene nastavení.
Je ale možné, že sa pletiem a tá voľba je niekde inde. Každopádne, ide to zmeniť a žiadne oprávnenia k tomu nepotrebuješ.
Skús prípadne transakciu SU3..citovat
icon #032751
eLCHa
SAP už také nemám, ale toto byla vždy první věc, kterou jsem měnil.
Pamatuji si, že je to nahoře mezi ikonami, hledejte uživatelská nastavení.

Když máte SAP máte i podporu - pokud nenajdete, ptejte se tam.citovat
#032752
avatar
Ten výstup je mix.. nadbytečné mezery, tečka jako oddělovač tisíců a čárka jako desetinný oddělovač. V praxi (kdysi?) by stačilo nahradit tečku za nic a hotovo, zbytek by si Excel ořezal a udělal z toho čísla.

Ukázka:
8.000
153,68
7.666,051

Bohužel už podruhé za tento měsíc jsem narazil na to, že Najít a nahradit funguje správně ručně (tečka za nic), ale pod VBA bez pardonů podělaný Range.Replace ne, takže jsem jak idiot musel řešit neoptimalizovanou procedurou (šlo by vylepšit, ale jsem otrávený.

Sub Zamena()

Dim wshListZdroj As Worksheet

Dim rngDataSloupecD As Range
Dim rngBunka As Range

Dim varHodnota As Variant

'prirazeni zdrojoveho listu do objektove promenne
Set wshListZdroj = Worksheets("MBTB")

'na zdrojovem listu...
With wshListZdroj

'podoblast vyplnenych bunek ve sloupci D
Set rngDataSloupecD = Intersect(.Range("D:D"), _
.UsedRange).SpecialCells(xlCellTypeConstants)

End With

'pro kazdou bunku podoblasti
For Each rngBunka In rngDataSloupecD.Cells

'prevzeti hodnoty
varHodnota = rngBunka.Value

'pokud neni bunka ciselna...
If Not IsNumeric(varHodnota) Then

'odstraneni tecky v obsahu
varHodnota = Replace(varHodnota, ".", "")

'navrat upravene hodnoty do bunky
rngBunka.Value = varHodnota

End If

Next rngBunka

'odstraneni formatovani
rngDataSloupecD.ClearFormats

'nastaveni formatu (cislo s oddelovacem tisicu bez des.casti)
'rngDataSloupecD.NumberFormat = "#,##0"

End Sub


Nad tím Replacem fakt zuřím.citovat
#032753
avatar
Tak to jsem nežral... uvedený kód zprasí hodnoty typu:

7.666,051

Proč mám pocit, že někdo něco v Office změnil...citovat
#032754
avatar
Fakt bych někoho spráskal.. (nemluvě o tom, že výstupy ze SAPu jsou pořád stejně idiotské).

Sub Zamena()

Dim wshListZdroj As Worksheet

Dim rngDataSloupecD As Range
Dim rngBunka As Range

Dim varHodnota As Variant

'prirazeni zdrojoveho listu do objektove promenne
Set wshListZdroj = Worksheets("MBTB")

'na zdrojovem listu...
With wshListZdroj

'podoblast vyplnenych bunek ve sloupci D
Set rngDataSloupecD = Intersect(.Range("D:D"), _
.UsedRange).SpecialCells(xlCellTypeConstants)

End With

'pro kazdou bunku podoblasti
For Each rngBunka In rngDataSloupecD.Cells

'prevzeti hodnoty
varHodnota = rngBunka.Value

'pokud neni bunka ciselna...
If Not IsNumeric(varHodnota) Then

'odstraneni tecky v obsahu
varHodnota = Replace(varHodnota, ".", "")

On Error Resume Next

'navrat upravene hodnoty do bunky
rngBunka.Value = CDbl(varHodnota)

End If

Next rngBunka

'odstraneni formatovani
rngDataSloupecD.ClearFormats

'nastaveni formatu (cislo s oddelovacem tisicu bez des.casti)
'rngDataSloupecD.NumberFormat = "#,##0"

End Sub
citovat
icon #032755
eLCHa
@xlnc
kouká, že ses rozjel.
Jediná metoda, u které si můžu navolit oddělovače je TextToColumns. Ta ale vyžaduje, aby hodnoty byly textové, jinak dělá paseku. Takže když vezmu ta tvoje tři čísla, tak musím převést na text 153,68, které mám v buňce jako číslo.
Testoval jsem jen na těch tvých třech číslech a převod na text možná jde udělat inteligentněji, teď mně ale nic lepšího nenapadá (a kvůli Join funguje jen pro jeden sloupec).
With Selection
.Value = Application.Transpose(Split("'" & Join(Application.Transpose(.Value), ";'"), ";"))
.TextToColumns Destination:=.Cells, DecimalSeparator:=",", ThousandsSeparator:="."
End With 'Selection


nemluvě o tom, že výstupy ze SAPu jsou pořád stejně idiotské
Teď prosím TomBa, aby si to nebral osobně.
Nepracuji a nikdy jsem nepracoval pro SAP, pouze jsem v něm 14 let pracoval. A chyba není na straně SAP, tedy za klávesnicí, ale před ní.
Takže souhlasím - jsou idiotské. Ale proto, že uživatel prostě práskne export a nepohraje si s nastavením. Je to úplně stejné, jako import textu v excelu.
Ve většině výkazů SAP si uživatel může nastavit oddělovače a i to blbé mínus za číslem přesunout dopředu.
Já se naopak vše snažil nastavit v SAP a v excel už jsem měl pouze relevantní data ve správném tvaru.
Svého času jsem dokonce dokázal tahat data i ze sestav, kteréto neumožňovaly - už si nevzpomínám, ale dělal jsem to nějak přes tisk - sestava zůstala někde uložená a odtamtud to šlo.citovat
#032756
avatar
@eLCHa
Já vím, použil jsi Text do sloupců už prve, kde jsem si poprvé naběhl s Replace já, a nevěřil jsem vlastním očím. Řešení to je, ale bez pardonů, "proč kurva musím ochcávat Excel a jeho sračky, když měl stačit jednořádkový Replace"? To už do prdele budeme sestavovat dvoudenní školení pro lidi "Sere vás Excel? Nemáte tušení, jak nás lektory." A já holt nepatřím k idiotům "keep smiling", kteří plácají pacičkama na každou novou verzi. Fakt už mě Excel přestává bavit. Jsem starý, unavený a nasraný.

S tím SAPem je to tak půl na půl. Pokud vím, viděl jsem výstupy XLS, které ve skutečnosti byly CSV.citovat

Strana:  1 2   další »

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