Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Tisztelt Fórumozók!
A témában csak elég régi bejegyzéseket találtam, ezért arra gondoltam, hogy újként tenném közzé a problémámat.
Egy ideig probléma nélkül használt Open Office táblázatban az egyes "Szám" kategóriájú - számadatokat tartalmazó cellák tulajdonsága "Szöveg" típusra változott, amiből adódóan a benne levő szám elé bekerült egy ' - azaz egy aposztróf karakter. Ez ugye azt eredményezi, hogy az egyes összesítéseknél ezeket a cellákat, illetve azok (elvileg) szám adatait nem veszi figyelembe a program, mert az aposztróf jel miatt szövegnek tekinti. Sajnos az egyes celláknál nem is egyértelmű ránézésre, hogy az éppen milyen kategóriába tartozik, csak ha megjelenítem a cella tulajdonságainál. Kézileg törölve az egyes hibás cellák értékét, majd újra beírva cellánként rendezhető a probléma, de a helyzetet súlyosbítja az, hogy a szóban forgó táblázat 10+ munkalapból és munkalaponként 200+ sorból és 20+ oszlopból áll össze, így az egyesével történő ellenőrzések és javítgatásokba beleőszülnék.
Ezért az lenne a kérdésem, hogy milyen módon lehetne az egész táblázatra és minden munkalapra érvényesíthető "aposztróf" eltávolításokat végezni úgy, hogy az egyes szöveges típusra mutálódott cellák "Szám" formátumra módosuljanak? Az egyes helyeken olvasott "Keresés és csere" funkció valamiért nem működik, pedig a "Keresett szöveg"nél a ^. és a "Csere erre" opciónál a & paramétereket adom meg, nem megfeledkezve a "Reguláris kifejezés" pipájáról sem.
Van valami hasznos tanácsotok? Előre is köszönöm!
A témában csak elég régi bejegyzéseket találtam, ezért arra gondoltam, hogy újként tenném közzé a problémámat.
Egy ideig probléma nélkül használt Open Office táblázatban az egyes "Szám" kategóriájú - számadatokat tartalmazó cellák tulajdonsága "Szöveg" típusra változott, amiből adódóan a benne levő szám elé bekerült egy ' - azaz egy aposztróf karakter. Ez ugye azt eredményezi, hogy az egyes összesítéseknél ezeket a cellákat, illetve azok (elvileg) szám adatait nem veszi figyelembe a program, mert az aposztróf jel miatt szövegnek tekinti. Sajnos az egyes celláknál nem is egyértelmű ránézésre, hogy az éppen milyen kategóriába tartozik, csak ha megjelenítem a cella tulajdonságainál. Kézileg törölve az egyes hibás cellák értékét, majd újra beírva cellánként rendezhető a probléma, de a helyzetet súlyosbítja az, hogy a szóban forgó táblázat 10+ munkalapból és munkalaponként 200+ sorból és 20+ oszlopból áll össze, így az egyesével történő ellenőrzések és javítgatásokba beleőszülnék.
Ezért az lenne a kérdésem, hogy milyen módon lehetne az egész táblázatra és minden munkalapra érvényesíthető "aposztróf" eltávolításokat végezni úgy, hogy az egyes szöveges típusra mutálódott cellák "Szám" formátumra módosuljanak? Az egyes helyeken olvasott "Keresés és csere" funkció valamiért nem működik, pedig a "Keresett szöveg"nél a ^. és a "Csere erre" opciónál a & paramétereket adom meg, nem megfeledkezve a "Reguláris kifejezés" pipájáról sem.
Van valami hasznos tanácsotok? Előre is köszönöm!
Open Office 4.1.14 a Windows 10 Pro -n
- Zizi64
- Globális moderátorok
- Hozzászólások: 4070
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Ezt jól tetted.A témában csak elég régi bejegyzéseket találtam, ezért arra gondoltam, hogy újként tenném közzé a problémámat.
A Nézet - Értékkiemelés megmutatja, hogy milyen típusú a cellatartalom, (hogy Szám, Szöveg, vagy Képlet van benne). Három különböző színnel jelöli a különböző típusokat (ideiglenesen) az eredeti formázás helyett.Sajnos az egyes celláknál nem is egyértelmű ránézésre, hogy az éppen milyen kategóriába tartozik, csak ha megjelenítem a cella tulajdonságainál.
Az aposztróf az egy - szerintem - idejétmúlt szövegtípus jelölő karakter, ami "eltűnik" az alkalmazása után, és csak a cellatartalom újraszerkesztésénél bukkan újra elő. Nem tudom, hogy nálad miért jelentek meg, mert ha szabályos CellaStílusokat alkalmaztál és nem közvetlen formázásokat, vagy formázott szöveget illesztesz be a cellába idegen forrásból, akkor ilyenek nemigen jelennek meg maguktól... Vagy te írtad be? Esetleg importáltad az adatokat valami .csv fájlból, és rosszul állítottad be az ImportFiltert?Az egyes helyeken olvasott "Keresés és csere" funkció valamiért nem működik, pedig a "Keresett szöveg"nél a ^. és a "Csere erre" opciónál a & paramétereket adom meg, nem megfeledkezve a "Reguláris kifejezés" pipájáról sem.
Mintafájlt mindenképpen töltsél fel ide, hogy lássam: milyen formázásokat (kézi/stílus) alkalmaztál.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Zizi64
- Globális moderátorok
- Hozzászólások: 4070
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Szerencsére az aposztróf "eltűnése" maga is egy látszólagos dolog, hiszen ha újraszerkesztéskor előkerül, akkor az tárolva is van valahol. A cella Formula (Képlet), és FormulaLocal (Lokalizált /lefordított/ Képlet) tulajdonsága tartalmazza a megjelenő szöveg aposztróffal kiegészített változatát. Emiatt egy jól megszerkesztett makróval könnyedén ki lehet cserélni a szövegtartalmat egy számmá konvertált numerikus értékre.
Az alábbi példafájlban ott vannak a makrók is, és néhány példa is. A StarBasic Val() függvénye csak a tizedespont elválasztót ismeri (a tizedesvesszőt nem), ezért ez egy kicsit megbonyolítja a dolgot, de nem túlságosan.
Semmiképpen ne jelölj ki egy EGÉSZ munkalapot a makró futtatása előtt, mert a sok millió cella vizsgálata rengeteg időt igényel. Először csak 1-2 cellát jelölj ki konvertálásra.
Az Xray-es sort "ki-REM-elheted", de erősen javallott valamelyik Objektumvizsgáló kiterjesztést, eszközt feltelepíteni és használni. Enélkül kínszenvedés (de legalábbis nem hatékony) a makró programozás! Lehetetlen ismerni az összes programozási objektum összes tulajdonságának és metódusának a nevét, bemenőváltozóit, stb... Ezeket "in-situ" ki tudod listázni az XrayTool-lal, vagy az MRI-vel. Amíg nincs feltelepítve, addig a rá való hivatkozás természetesen hibakódot dob fel a makró futásakor.
Itt a makrókód is:
Az alábbi példafájlban ott vannak a makrók is, és néhány példa is. A StarBasic Val() függvénye csak a tizedespont elválasztót ismeri (a tizedesvesszőt nem), ezért ez egy kicsit megbonyolítja a dolgot, de nem túlságosan.
Semmiképpen ne jelölj ki egy EGÉSZ munkalapot a makró futtatása előtt, mert a sok millió cella vizsgálata rengeteg időt igényel. Először csak 1-2 cellát jelölj ki konvertálásra.
Az Xray-es sort "ki-REM-elheted", de erősen javallott valamelyik Objektumvizsgáló kiterjesztést, eszközt feltelepíteni és használni. Enélkül kínszenvedés (de legalábbis nem hatékony) a makró programozás! Lehetetlen ismerni az összes programozási objektum összes tulajdonságának és metódusának a nevét, bemenőváltozóit, stb... Ezeket "in-situ" ki tudod listázni az XrayTool-lal, vagy az MRI-vel. Amíg nincs feltelepítve, addig a rá való hivatkozás természetesen hibakódot dob fel a makró futásakor.
Itt a makrókód is:
Kód: Egész kijelölése
REM ***** BASIC *****
Option Explicit
Sub ReworkEachCellInCurrentSelection()
Dim oSel as object
Dim oRange as object
Dim oCell as object
Dim lCols as long
Dim lRows as long
Dim lCol as long
Dim lRow as long
oSel = getUnifiedCurrentCellSelection()
If IsNull(oSel) Then Exit Sub
For Each oRange In oSel
lCols = oRange.Columns.Count - 1
lRows = oRange.Rows.Count - 1
For lRow = 0 To lRows
For lCol = 0 To lCols
oCell = oRange.getCellByPosition(lCol, lRow)
Conv_AposNum2Num(oCell)
Next lCol
Next lRow
Next oRange
End Sub
Function getUnifiedCurrentCellSelection() as variant
Dim dummy As Object
Dim oDoc as object
Dim oSel as object
Dim oRanges as object
getUnifiedCurrentCellSelection = dummy
On Local Error Goto fail
oDoc = ThisComponent
oSel = oDoc.CurrentSelection
If oSel.supportsService("com.sun.star.sheet.SheetCellRanges") Then
oRanges = oSel
Else
oRanges = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")
If oSel.supportsService("com.sun.star.sheet.SheetCellRange") Then
oRanges.addRangeAddress(oSel.RangeAddress, False)
End if
EndIf
getUnifiedCurrentCellSelection = oRanges
fail:
End Function
Sub Conv_AposNum2Num(oCell)
Dim MyValue as Double
Dim Stext As String
Xray oCell
sText = oCell.String
'Print oCell.FormulaLocal, ", ", sText
if Left(oCell.FormulaLocal,1) = "'" then
if InStr(sText,",") > 0 then
Mid(sText,InStr(sText,","),1) = "."
end if
MyValue = Val(sText)
oCell.Value = MyValue
end if
End Sub
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Köszönöm a gyors válaszokat és a megoldási javaslatot is. Mellékelek egy mintafájlt, ami több cellában is (pl. D164-194) megmutatja a szám kategóriáról szövegre átállásokat. Természetesen nem csak a megjelölt cellákkal van gond, hanem az átküldött mintában több helyen is, illetve a mintaként el nem küldött többi munkalapon belül is.Zizi64 írta: ↑2023. december 12., kedd 20:50Ezt jól tetted.A témában csak elég régi bejegyzéseket találtam, ezért arra gondoltam, hogy újként tenném közzé a problémámat.
A Nézet - Értékkiemelés megmutatja, hogy milyen típusú a cellatartalom, (hogy Szám, Szöveg, vagy Képlet van benne). Három különböző színnel jelöli a különböző típusokat (ideiglenesen) az eredeti formázás helyett.Sajnos az egyes celláknál nem is egyértelmű ránézésre, hogy az éppen milyen kategóriába tartozik, csak ha megjelenítem a cella tulajdonságainál.
Az aposztróf az egy - szerintem - idejétmúlt szövegtípus jelölő karakter, ami "eltűnik" az alkalmazása után, és csak a cellatartalom újraszerkesztésénél bukkan újra elő. Nem tudom, hogy nálad miért jelentek meg, mert ha szabályos CellaStílusokat alkalmaztál és nem közvetlen formázásokat, vagy formázott szöveget illesztesz be a cellába idegen forrásból, akkor ilyenek nemigen jelennek meg maguktól... Vagy te írtad be? Esetleg importáltad az adatokat valami .csv fájlból, és rosszul állítottad be az ImportFiltert?Az egyes helyeken olvasott "Keresés és csere" funkció valamiért nem működik, pedig a "Keresett szöveg"nél a ^. és a "Csere erre" opciónál a & paramétereket adom meg, nem megfeledkezve a "Reguláris kifejezés" pipájáról sem.
Mintafájlt mindenképpen töltsél fel ide, hogy lássam: milyen formázásokat (kézi/stílus) alkalmaztál.
- Csatolmányok
-
- XXXyyy Kft összesítő.ods
- (36.33 KiB) Letöltve 83 alkalommal.
Open Office 4.1.14 a Windows 10 Pro -n
- Zizi64
- Globális moderátorok
- Hozzászólások: 4070
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Érdekes módon nálam összegzi az AOO és a LO is a kézzel szövegként megformázott cellákat is. Ettől persze még (néhány kivételével, amit biztosan te javítottál már) SZÖVEG típusúak maradtak a bevitt értékek. De nem kellene SZÖVEG típusúra formázni azokat a cellákat, amibe számokat akarsz bevinni. (Főleg nem kéne továbbmásolni - formátumecsettel, vagy máshogy - azt a formázást, ami ilyen-olyan okból valahogyan elromlott.)
De leges-legelőször is el kell felejteni a KÉZI (közvetlen, direkt) formázási módszert. Az egyes oszlopokra, adott cellatartományokra létre kell hozni egy-egy cellastílust, és azt alkalmazni. És SOHA nem szabad külső forrásból előreformázott tartalmat beilleszteni. Csakis az ÉRTÉKET szabad beilleszteni, a formázások nélkül.
Végül: az általam összedobott makró működik a példafájlodon: a szöveges tartalmakat számmá alakítja, de természetesen az elromlott formázásokat nem teszi rendbe, azon még kell dolgozni. Vagy kézzel a makrófuttatás előtt, vagy magának a makrónak kell törölnie az elcseszett formázást még a szöveg --> szám konverzió előtt.
De leges-legelőször is el kell felejteni a KÉZI (közvetlen, direkt) formázási módszert. Az egyes oszlopokra, adott cellatartományokra létre kell hozni egy-egy cellastílust, és azt alkalmazni. És SOHA nem szabad külső forrásból előreformázott tartalmat beilleszteni. Csakis az ÉRTÉKET szabad beilleszteni, a formázások nélkül.
Végül: az általam összedobott makró működik a példafájlodon: a szöveges tartalmakat számmá alakítja, de természetesen az elromlott formázásokat nem teszi rendbe, azon még kell dolgozni. Vagy kézzel a makrófuttatás előtt, vagy magának a makrónak kell törölnie az elcseszett formázást még a szöveg --> szám konverzió előtt.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Zizi64
- Globális moderátorok
- Hozzászólások: 4070
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
Módosított, és a példafájlodba beágyazott makró és annak indító menüpontja.
Engedélyezd a makrófutást a fájl megnyitása közben.
Jelöld ki a D164:F194 tartományt. A Főmenü Segítség (Help) menüpontja mellett találsz egy új menüpontot és almenüpontot. Kattints a ReworkEachCellInCurrentSelection menüpontra.
A módosított makró törli a kijelölt cellatartomány kézi (manuális, hard, közvetlen, direkt - ki, hogy nevezi) formázási tulajdonságait, majd alkalmazza az általam előzőleg kézzel létrehozott cellastílust, amelynek neve: MyIntegers.
Ezután végzi el a konvertálást azokon a cellákon, amelyek ' karaktert tartalmaznak a lokalizált formula elején.
A cellastílus halványzöld hátterét csak azért állítottam be, hogy lásd, mely tartományok vannak már újraformázva és konvertálva. Ha a STÍLUS-ból törlöd a háttérszínt (nem a cellákat kell újraformázni!!!), akkor az összes zöld háttér eltűnik.
Ha eleve stílusokkal formáztál volna, akkor még ettől is kevesebb munkaidőbe telne a konvertálás.
Engedélyezd a makrófutást a fájl megnyitása közben.
Jelöld ki a D164:F194 tartományt. A Főmenü Segítség (Help) menüpontja mellett találsz egy új menüpontot és almenüpontot. Kattints a ReworkEachCellInCurrentSelection menüpontra.
A módosított makró törli a kijelölt cellatartomány kézi (manuális, hard, közvetlen, direkt - ki, hogy nevezi) formázási tulajdonságait, majd alkalmazza az általam előzőleg kézzel létrehozott cellastílust, amelynek neve: MyIntegers.
Ezután végzi el a konvertálást azokon a cellákon, amelyek ' karaktert tartalmaznak a lokalizált formula elején.
A cellastílus halványzöld hátterét csak azért állítottam be, hogy lásd, mely tartományok vannak már újraformázva és konvertálva. Ha a STÍLUS-ból törlöd a háttérszínt (nem a cellákat kell újraformázni!!!), akkor az összes zöld háttér eltűnik.
Ha eleve stílusokkal formáztál volna, akkor még ettől is kevesebb munkaidőbe telne a konvertálás.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
- Zizi64
- Globális moderátorok
- Hozzászólások: 4070
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás
...Arról azért mindenképpen jelezz vissza, hogy van-e egyáltalán valami gyakorlatod a makrók futtatásában, módosításában, szerkesztésében, létrehozásában...
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].