Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás

Általában minden ami máshova nem fér
axel777
Hozzászólások: 2
Csatlakozott: 2023. december 12., kedd 16:18

Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás

Hozzászólás Szerző: axel777 »

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!
Open Office 4.1.14 a Windows 10 Pro -n
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
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

Hozzászólás Szerző: Zizi64 »

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.
Ezt jól tetted.


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.
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.


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.
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?



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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
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

Hozzászólás Szerző: Zizi64 »

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.
Conv_AposNum2Num.ods
(15.14 KiB) Letöltve 43 alkalommal.
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].
axel777
Hozzászólások: 2
Csatlakozott: 2023. december 12., kedd 16:18

Re: Open Office Calc aposztróf eltávolítása, szöveg helyett szám kategóriára váltás

Hozzászólás Szerző: axel777 »

Zizi64 írta: 2023. december 12., kedd 20:50
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.
Ezt jól tetted.


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.
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.


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.
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?



Mintafájlt mindenképpen töltsél fel ide, hogy lássam: milyen formázásokat (kézi/stílus) alkalmaztál.
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.
Csatolmányok
XXXyyy Kft összesítő.ods
(36.33 KiB) Letöltve 41 alkalommal.
Open Office 4.1.14 a Windows 10 Pro -n
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
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

Hozzászólás Szerző: Zizi64 »

É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.
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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
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

Hozzászólás Szerző: Zizi64 »

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.
XXXyyy Kft összesítő_Zizi64.ods
(57.33 KiB) Letöltve 43 alkalommal.
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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
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

Hozzászólás Szerző: Zizi64 »

...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].
Válasz küldése