Time Code a Calc-ban

Táblázatkezelő
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Time Code a Calc-ban

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

Sziasztok!

Egyetlen dolgot nem tudok megoldani a Calc segítségével. Kaptam már ötletet, de ahhoz külső szoftver is kellett, azonban úgy gondolom, nem lehet annyira bonyolult a probléma, hogy ne lehessen megoldani a LO segítségével és csak rajtam fog ki a dolog.

Adott egy oszlop, amiben Time Code van. Ez a következő formátumú HH:MM:SS -óra, perc, másodperc.
Doc-ban kapom az anyagot, amit átviszek a Calc-ba és itt jön a probléma. Az egyik oszlop (mondjuk az A) tartalmazza a time code-ot, de csak HH:MM:SS formában és itt kellene nekem a megoldás, hogy az oszlopban lévő mindegyik sorban szereplő időkód elé be szeretnék illeszteni egy 00: értéket. Egyesével meg tudom csinálni, de van eset, hogy akár több ezer sort is át kell írni. Ezt szeretném automatizálni.

A könnyebb érthetőség kedvéért mellékelek egy rövid videót is a kívánt folyamatról.

példa
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Alapvetően ketté kell választani a problémát annak a függvényében, hogy mit akarsz kezdeni az eredménnyel.

Ahogy a belinkelt videón is látszik, a kiindulási adatok automatikusan jobbra rendezettek, azaz valódi (számértékkel rendelkező) IDŐ adatokról van szó. A
00:
beszúrása az adatok elé azt eredményezi, hogy a számításhoz is használható adatokból "buta" szövegadatok válnak. (00:00:00:00 Ilyen alapértelmezett Dátum-Idő formátum tudtommal nem létezik, ezért nem tudja annak értelmezni a Calc. Inkább átalakítja egyszerű szöveggé (string).
(én sem tudom, mit jelent az újabb két nulla, felvilágosítanál?...)

Ha ez a kimeneti formátum megfelel neked, akkor a következőket kell tenned a keresés és csere előtt:
1.: Kijelölöd azt az oszlopot, amelyben a HH:MM:SS formátumú adatok vannak.
2.: Kivágod az összes ilyen adatot, majd formázatlan szövegként visszailleszted. Ekkor már automatikusan jobbra rendezett lesz, azaz már nem Dátum-Idő számértéket reprezentál, hanem számjegyek és kettőspontok sorozata csupán.

3.: Most jön a Keresés és csere funkció kicsit speciálisabb módon történő használata:
Megint kijelölöd azt az oszlopot, amelyik a kiegészíteni kívánt stringeket tartalmazza.
4.: Bekapcsolod a reguláris kifejezések használatát,
5.: A "Keresés" mezőbe beírod az alábbi kifejezést: 6.: A "Csere" mezőbe pedig a kifejezést.
7.: Bekapcsolod még a "Keresés csak az aktuális kijelölésben" opciót, aztán a "Mindet cseréli" gombra kattintasz.
A képen három különböző oszlopban mutatom a tennivaló fázisait, amiket egyébként ugyanabban az oszlopban kell végrehajtanod.
A képen három különböző oszlopban mutatom a tennivaló fázisait, amiket egyébként ugyanabban az oszlopban kell végrehajtanod.
Érdemes elolvasni a súgóban és egyéb leírásokban a "Reguláris kifejezések használata" című részt...




Ha viszont neked valamiféle számításhoz (akár csak egy egyszerű különbségképzéshez is) a későbbiekben szükséged van az időkódok számértékére is, akkor máshogy kell eljárnod, de arra egyelőre nincs ötletem... (mert nem tudom, hogy mit jelent a beszúrt két karakter...)
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].
antiuhu
Önkéntesek
Hozzászólások: 194
Csatlakozott: 2008. február 28., csütörtök 23:44

Re: Time Code a Calc-ban

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

Üdv!

A videóban szereplő táblát kiegészíteném egy plusz oszloppal (itt legyen ez a B oszlop).
B1 cellába írd a következő képletet:

Kód: Egész kijelölése

Angol függvénynevekkel:
=CONCATENATE("00:";TEXT(A1;"HH:MM:SS"))

Magyar fügvénynevekkel:
=ÖSSZEFŰZ("00:";SZÖVEG(A1;"HH:MM:SS"))
Aztán kitöltés lefelé (Cella jobb alsó sarka fölött az egérmutató kis keresztté változik, majd két klikk.)
Mint ahogy Zizi64 is írta, így szöveggé fog alakulni a számod.

Anti
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Utána olvastam ennek a Timecode dolognak. Ha jól értelmezem, neked valamiféle média-stream kereteit (frame) kellene jelölnöd azzal a bizonyos hozzáadott karaktersorral.
Valós számértékként ez esetben is nehéz lesz kezelni az adatot, mert többféle frame/secundum érték létezik. Például a 30 fps értéknél a
00:00:00:29 érték után következik a
00:00:01:00 érték

Tehát az időkód formátuma, ha jól gondolom: "HH:MM:SS:FF".
Ebből azt is gondolom, hogy neked talán nem is az elejére, hanem a végére kellene beilleszteni azt a ":00" értéket - a frame értéket - hiszen a te leírásodban a "HH:MM:SS értékek léteztek, és az ":FF" nem. Ilyen "időformátumot tudtommal nem ismer az OpenOffoce/LibreOffice, hiszen mindig tudatni kéne a programmal azt is, hogy hány frame után kell váltania a másodperceket, és nullázni az ":FF" paramétert.


Vagy te a "DD:" Napok" paramétert akarod hozzáadni az órák-percek-másodpercek formátumhoz? Ez esetben gond nélkül működhet számértékként a LO Dátum-idő számábrázolása, és műveleteket is lehet így végezni vele.
Ebből az is következik, hogy SEMMIFÉLE hozzáfűzést nem kell végezned, csak megadni egy egyéni Dátumidő formátumot és azzal formázni az adataidat:
"DD:HH:MM:SS"
Azzal a megkötéssel persze, hogy a Dátumidő formátumokban 00 óra létezik, a hónap 00-adik napja viszont NEM! Tehát csak a nap (DD) helyiérték csak a 01 - 31 (28, 29, 30) végértékeket veheti fel. Ezzel szemben a Dátumidő-különbség LEHETNE akár 00 nap és valamennyi óra-perc-másodperc is.
Továbbá figyelembe kell venned a Dátumidő formátumok egyéb jellegzetességét is: Két azonos, megegyező dátumidő különbsége egyszerű Számértékként ábrázolva ugyan nullával egyenlő, de ez Dátumidőként ábrázolva 1899-12-30 00:00:00 -at ad eredményül. Ez az alapdátum. Ez a LO programban három eltérő érték közül megválasztható, de az itt közölt az alapértelmezett érték.
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].
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Sziasztok!

Köszönöm az ötleteket és javaslatokat. Mindet végig gondoltam. :super:
Igen, valóban ún. videós time code-ról van szó, ami esetünkben (PAL) 25 kocka/másodperc. Nem akarok műveleteket végezni az oszlopok értékei között, csupán megjeleníteni azokat, mert ha készen van a táblázat, csv-be kell elmenteni, hogy az alkalmazás (Nuendo5.x) értelmezni tudja, de ez csak akkor megy, ha HH:MM:SS:FF formátumú a TC (Time Code).
Még az is bonyolítja a dolgot, hogy a beillesztett szöveg nem egységes, van hogy csak a MM:SS értéket tartalmazza, mint most is és van amikor ennél több információt, de az "ÖSSZEFŰZ" függvénnyel ez remekül orvosolható, köszönet érte. Az útmutatás alapján arra jutottam, hogy az a leg egyszerűbb, ha a TC-os szlopok szöveges formázást kapnak, így nem lesz galiba. Nagyon hasznosak voltak a tanácsok, minden remekül működik, azonban felmerült egy újabb ötlet, amit igyekszem még ma megfogalmazni és kérdés formájában elétek tárni, talán azzal kapcsolatban is lesz tanácsotok.
Verzió: 3.6.0.4 (Win7)
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Nagyon jó tanácsokat adtatok, majdnem jól működik a dolog, azóta is használom és közben merült fel egy dolog, már csak egy problémát kellene megoldanom, hogy gyors és hatékony legyen az adatbevitel.
Az "ÖSSZEFŰZ" függvényben van olyan lehetőség, hogy meg lehet adni egy karaktersor hányadik eleme után illesszen be például egy új karaktert? Hasonlóan gondoltam, mint a "CSERE" szövegfüggyvény esetén, csak itt nem kicserélni kellene karaktereket, hanem beszúrni a második után egy :-t. Tehát azt szeretném, hogy például a 0128-ból, 01:28 vagy 00:01:28:00 legyen. Ennek leginkább kényelmi okai lennének, mert rengeteg kódot kell begépelni és a : is lassítja a bevitelt. Tökéletesen megfelel a celláknak a szöveg formázás, mert a kész táblázatot utána *.CSV-ben kell elmentenem.

Olyan megoldás van esetleg a "Ha" függvénnyel, hogy ha 4 vagy 8 karakter szerepel a cellában, akkor a második, a negyedik és a hatodik után tegyen be egy :-t?
Tehát ha ezt adom meg értéknek (szöveg): 00000002 akkor ez legyen belőle (szöveg): 00:00:00:02

Remélem érthetően fogalmaztam.
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Keresés és csere, "Reguláris kifejezések" opcióval az egész módosítandó tartományra alkalmazva

Kiindulás:
1228
Először beírod hogy

Keresés (számjegyek megkeresése kettesével):

Kód: Egész kijelölése

[:digit:]{2}
Csere (Tegye is vissza, be minden két számjegy mögé tegyen kettőspontot: Részeredmény:
1228 -> 12:28:
Ez nálam azzal is jár, hogy felismeri az idő formátumot és "ráadásul és önhatalmúlag" hozzáteszi a záró "00"-t

Tehát eddig az eredmény:
1228 -> 12:28: -> 12:28:00 (valódi idő-formátum)


Ezután beírod hogy

Keresés (első számjegy megkeresése):

Kód: Egész kijelölése

^[:digit:]{1}
Csere (tegye is vissza, de elé rakjon egy "00:" sztringet): Tehát az eredmény:
1228 -> 12:28: -> 12:28:00 (valódi idő-formátum) -> 00:12:28:00 (de már szöveg-formátumban)


Ha pedig még jobban akarsz egyszerűsíteni a dolgodon, akkor mindezt felveheted egy makróba, és akkor egyetlen gombnyomással tudod korrigálni a hasonló fájljaidat...
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].
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Nagyon jó, bizonyos feltételekkel sikerül is, de hiába állítom át a folyamat kezdetekor szövegre a cellaformázást, miután végig futtatom, folyton ez lesz a vége: 00:01:29
Ez azonban csak akkor igaz, ha 0-val kezdődik az adat, márpedig a 10. percig szükség van a nullára, különben a végeredmény nem lesz jó formai okok miatt. (pl.: 00:01:29:00 ami beütéskor 0129).
Hogyan tudja a nulla így összekavarni? De ami lényegesebb kérdés, hogyan tudom elkerülni a problémát? :)
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Ha feltöltöd a te példafájlodat megnézem a beállításokat...

Én formázatlan (alapértelmezett formázású) cellán hajtottam végre "Keresés és cserét" és a leírt végeredményt kaptam.
És valószínűleg ezért történhetett ez is:
Részeredmény:
1228 -> 12:28:
Ez nálam azzal is jár, hogy felismeri az idő formátumot és "ráadásul és önhatalmúlag" hozzáteszi a záró "00"-t
Ha te már előre szövegesre formázod a cellát, akkor valószínűleg nem erőlteti az IDŐ formátum felismerését a program...
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].
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Zizi64 írta:Ha te már előre szövegesre formázod a cellát, akkor valószínűleg nem erőlteti az IDŐ formátum felismerését a program...
Azért formázom "szövegesre" mert különben ha alap formázáson ütöm be pl. a 0129 értéket, a nullát lehagyja az elejéről.
Ha szövegesre formázom, akkor meg a már említett eredményt kapom. Ha van 0-val kezdődő érték az oszlop elején, akkor borul az egész módszer és 00:01:29: v. 00:11:20: stb. lesz az eredmény.
0_hiba.ods
(9.46 KiB) Letöltve 130 alkalommal.
A hozzászólást 2 alkalommal szerkesztették, utoljára Chili 2012. augusztus 23., csütörtök 12:28-kor.
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Azért formázom "szövegesre" mert különben ha alap formázáson ütöm be pl. a 0129 értéket, a nullát lehagyja az elejéről.
Ja, ezt a részét most már értem a pronlémának.

Akkor viszont 4 lépésre lesz szükséged:
Először a 3 karakter hosszú szövegeket le kell cserélned "0"+3karakter szövegekre

Aztán jön az előzőekben megadott első és második lépés.

És még kell egy olyan lépés is, ami a [Sztring végén lévő ":"] jelet keresi és lecseréli ":00"-ra, hogy a szöveged vége is jó legyen.


Négy lépés végrehajtásához már biztos, hogy a makró a legjobb megoldá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: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

...Persze kombinálni, variálni kell a lépéseket a cellát formázási típusának függvényében.


Kis méretű fájlokat inkább közvetlenül ide töltsél fel. A belinkelt dolgok előbb-utóbb eltűnnek, és a később idetévedő felhasználók csak a fejüket vakarhatják, hogy vajon mi is lehetett a belinkelt fájlban.
Alul van a "Csatolmány feltöltése" fül...
Utólag is szerkesztheted a régebbi hozzászólásodat, és feltöltheted a fájlodat.
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: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Tehát alapértelmezett formátumból kiindulva (123 illetve 1234 alakú számok) ezt kell végrehajtanod, vagy makróznod:

Első lépés a háromjegyű számok négyjegyű sztringgé alakítása az "elején kettőspont" hozzáfűzése szöveggé konvertálja
(keresés)

Kód: Egész kijelölése

^[:digit:]{3}$
(csere) Második lépés a négyjegyű számokat is négyjegyű sztringgé alakítjuk: az "elején kettőspont" hozzáfűzése szöveggé konvertálja
(keresés)

Kód: Egész kijelölése

^[:digit:]{4}$
(csere) Harmadik lépés Minden két számjegyet "két számjegy+":" -tá alakítunk
(keresés)

Kód: Egész kijelölése

[:digit:]{2}
(csere) Negyedik lépés Az első ":"-t "00:" szövegre cseréljük
(keresés) (csere) Ötödik lépés Az utolsó ":"-t ":00" szövegre cseréljük
(keresés) (csere)
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].
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Zizi64 írta: Akkor viszont 4 lépésre lesz szükséged:
Először a 3 karakter hosszú szövegeket le kell cserélned "0"+3karakter szövegekre

Aztán jön az előzőekben megadott első és második lépés.

És még kell egy olyan lépés is, ami a [Sztring végén lévő ":"] jelet keresi és lecseréli ":00"-ra, hogy a szöveged vége is jó legyen.
És ha így oldanám meg? Ekkor csak a "B" oszlopban szereplő értékek "közepére" (6. hely) kell beszúrni egy :-t. De hogyan? Ez is keresés-csere?
b_oszlopba.ods
(9.62 KiB) Letöltve 140 alkalommal.
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Ha nem baj, hogy a cellában valójában nem csak a szöveg van, hanem az a képlet, ami a kijelzett szöveget létrehozza, akkor a szöveges formátumú, mindig négy karakteres adatokból álló tartomány mellett ezt a képletet alkalmazd a C1-ben lévő adat feldolgozásához:

Kód: Egész kijelölése

=CONCATENATE("00:";LEFT(C1;2);":";RIGHT(C1;2);":00")
(Eddig az volt a vezérfonalam, hogy kívülről legyenek manipulálva az adatok, ne pedig cellaképlettel...)
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].
Chili
Hozzászólások: 7
Csatlakozott: 2012. július 13., péntek 15:02

Re: Time Code a Calc-ban

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

Zizi64 írta:Ha nem baj, hogy a cellában valójában nem csak a szöveg van, hanem az a képlet, ami a kijelzett szöveget létrehozza, akkor a szöveges formátumú, mindig négy karakteres adatokból álló tartomány mellett ezt a képletet alkalmazd a C1-ben lévő adat feldolgozásához:

Kód: Egész kijelölése

=CONCATENATE("00:";LEFT(C1;2);":";RIGHT(C1;2);":00")
(Eddig az volt a vezérfonalam, hogy kívülről legyenek manipulálva az adatok, ne pedig cellaképlettel...)
Csak a cellák látható tartalma érdekes, mert csak az jelenik meg, amikor elmentem *.CSV-be a fájlt, úgyhogy ez így tökéletes.

Az a lényeg, hogy egyszerű és könnyen kezelhető megoldásra jutottunk. Nagyon szépen köszönöm a segítséget, sokat tanultam általa.
Verzió: 3.6.0.4 (Win7)
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Time Code a Calc-ban

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

Ezt meg az alapértelmezett (szám) formátumú 3 és 4 jegyű adatokhoz használhatod:

Kód: Egész kijelölése

=CONCATENATE("00:";LEFT(IF(LEN(C1)=3;"0"&C1;C1);2);":";RIGHT(C1;2);":00")
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