Halihó!
Kapok különböző forrásokból táblázatokat. Egyelőre mindenki vagy csv-ben vagy valamilyen excel formátumban (pl. xlsx) küldi, amije van. Néhány naponta jellemzően új forrás kezd el adatokat küldeni, a korábbiaktól eltérő formátumban. Eddig van 5, még kb. 10-re számítok hamar, de később ritkábban, még akár több 10, akár 100 is jöhet majd.
Saját felhasználásra ki szeretnék nyerni adatokat mindegyikből. Minden eddigihez kézzel elkészítettem egy adatkinyerő/formázó táblázatot Libreoffice-ban, amibe az új adatokat bedobom, és a számomra kellő adat kijön a másik oldalán. Vannak egyszerűek és vannak olyanok, amikkel megszenvedtem. Leírom a jellemző kihívásokat. Szeretném, ha tanácsot adnátok vagy abban, hogy ezt vagy azt a lépést hogy lehet felgyorsítani, vagy az egész kézi matyizást hogy lehetne program írással automatizálni. A cél, hogy a következő adatkinyerő táblázatok elkészítése gyorsabb legyen és kevesebbet szívjak.
Formulákkal elég sok tapasztalatom van (de messze nem ismerek mindent), Libreoffice tudom, hogy támogat programozást különféle nyelveken, de nem próbáltam még.
- Egy munkalapról egy másikra szeretném két oszlop tartalmát átmásolni. Ezt jelenleg úgy csinálom, hogy új munkalap, A2 cellába beírom mondjuk azt, hogy =$Worksheet.Q2, A3 cellába mondjuk azt, hogy =$Worksheet.L2, aztán kijelölöm az A2 és A3 cellát, megfogom a kijelölés jobb alsó sarkát az egérrel, és lehúzom. Tartom. Tartom. Tartom. Elmegy mondjuk 30 másodperc. Elengedem. Az első 3000 sort lemásolta. Aztán mondjuk ugyanezt egy másik tartománnyal. Az eredmény jó, a kijelölés húzása helyett nem lenne baj valami gyors módon azt mondani, hogy 1389 alkalommal másold le ezt a két cellát. A két oszlop copy paste másolása a másik munkalapra nem jó, mert ha új adatot küldenek, akkor ahová áthoztam az adatot, ott is módosulnia kell.
- Egy oszlopban szétválasztandó adatok vannak. Mondjuk "AAAAA: 123456". Ebből nekem mondjuk csak a szám kell. Formulát nem találtam erre, szóval most minden alkalommal, amikor új adat jön, az oszlopot lemásolom, kijelölöm, Data/Text to Columns, és így kézzel két oszlopba vágom a tartalmát. Onnan már a formula felveszi. Ezt szeretném automatizálni.
- Van egy oszlop. Számok vannak benne, de valami ismeretlen okból szövegként eltárolva. Pl. ami 10-nek látszik, az valójában '10. Nekem szám kellene, mert pl. 3 oszlop közül meg kellene mondanom, melyik a legkisebb, de a =min(J6,L6,M6) 0-t ad 10 helyett, ha a J6-ban '10 van 10 helyett. Ezt megint a Data/Text to Columns használatával tudom javítani, amit megint csak automatizálni szeretnék.
Hozzászólások
Biztos páran megsértődnek, de használj Excel-t. Ezek a funkciókra ott a Powerquery.
Nem használtam még Powerquery-t. Le tudod írni röviden, hogy a fenti problémát hogyan közelítené meg?
disclaimer: ha valamit beidéztem és alá írtam valamit, akkor a válaszom a beidézett szövegre vonatkozik és nem mindenféle más, random dolgokra.
A powerquery-t egy bena sql-kent is felfoghatod. Van sokfele bemeneti szuroje. Johet az adat mindenhonnan is.
Masszirozhatod az adatot majd kitolhatod Excel tablakba.
Ha nagyon komoly a processzed, akkor Power Apps, de az nem olcso.
Alapokat szerintem a libreoffice is tud amugy. Ott is van akar web query meg Base.
Youtube: libreoffice query
Leegyszerűsítve: Képes arra, hogy egy adatforráson(táblázaton) műveleteket végezzen. Ezeket a műveleteket képes elmenteni, majd egy másik hasonló szerkezetű adatforráson végrehajtani. Ismétlődő feladatok automatizálására lehet használni. Nem kell hozzá programozási ismeret. Haladó Excel ajánlott.
1. Jelöld ki a forrást, Data → More Filters → Standard Filter… Itt állítsd be feltételnek, hogy Not Empty, az Optionsben legyen bepipálva a Keep filter criteria, a Copy results to-nál add meg a kezdő cellát, ahová másolja. Ha frissül a forrásadatod, bármelyik celláján állva a Data → Refresh Range frissíteni fogja a másolatot.
2. és 3. A DECIMAL függvénnyel számmá konvertálhatsz, a REGEX-szel meg olyan formára konvertálod a forrást, amire nem szégyelled. Pl.: =DECIMAL(REGEX(F3;"^[^:]+: ";"");10)
Megnézem, köszi
disclaimer: ha valamit beidéztem és alá írtam valamit, akkor a válaszom a beidézett szövegre vonatkozik és nem mindenféle más, random dolgokra.
1. OK, lehet, hogy én értek valamit félre, de nem sikerült _két_ oszlop tartalmát másolni így.
Ki tudom jelölni az egyik oszlopot, és ahogy írtad, máshová átmásolja. Vagy ha nem jelölök ki semmit, akkor az összes oszlopot átmásolja. Persze mindezt szűrve. Viszont ha két oszlopot jelölök ki, akkor szürke ez az opció.
Ki tudnám egyesével jelölni a két oszlopot, de mindkettőben vannak üres cellák, nem egymás mellett, szóval a kettő nem lesz így összhangban.
disclaimer: ha valamit beidéztem és alá írtam valamit, akkor a válaszom a beidézett szövegre vonatkozik és nem mindenféle más, random dolgokra.
Ha csv, írj rá awk scriptet, ami megcsócsálja, átalakítja, feldolgozza, majd az awk által generált kimenetet importáld be.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
nodejs:
exeljs vagy node-xlsx
Ezt nagy valószínűséggel még az AI is megoldja hibamentesen.
Semmiképp sem csinálnám LO -ban akkor inkább Excel + VB macro ha van még olyan.
Megy LO-ban is: LibreOffice Basic. Mondjuk személy szerint inkább python (pandas.DataFrame), vagy R (dataframe vagy data.table). Mindkettő megy Jupyter Notebook-ból is, kezdőnek egyszerűbb. Vagy lehet használni gnumeric-et táblázatkezelőnek, ott nincs saját makro nyelv, python-ban scriptelhető.
A 2-esre itt egy "egyszerű képlet. Feltétel, A1-ben van a hülye "akármi: szám" adatod, és ahogy a példában írtad szóközzel van elválasztva:
=MID( A1; SEARCH( " "; A1; 1 ) + 1; LEN( A1 ) - SEARCH( " "; A1; 1 ) )
illetve ugyanez kicsit rövidebben és nem kell 2x kerestetni:
=RIGHT( A1; LEN( A1 ) - SEARCH( " "; A1; 1 ) )
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Szerintem minden problémára a megfelelő eszközt. A bejövő adat szűrése és egységes formátumra konvertálása ismétlődő feladat. ha egy feladóhoz megvan a "sablon" akkor azt újra lehet használni 100x. Erre szerintem programozás (valamilyen szkript nyelv) való. Nem tudom mennyire lehet az MS formátumot pl pythonból olvasni. Ha ez gond, akkor marad egy kézzel végzendő, "ahogy van kimentem CSV -be" lépés. Az egységes formátum attól függ, mivel fogod az adatot feldogozni. Ha marad a LO, akkor lehet ez CSV, mert az tutira importálható, de ha a LO is tud SQL szervertől kérdezni, akkor mehet az egységes adat oda is. (Csak példák, majd kitalálod.)
Ha megvan az egységesítés, és változó, hogy mit kell kinyerni az adatból, akkor jó megoldás a táblázat kezelő, mint könnyen formára szabható jelentés készítő. Adatot be kell importálni, majd a táblázat számol, grafikont készít, stb.
Ami eszembe jutott, hogy sejtésem szerint jó lehet a faladatra az a Jupyter notebook. Ez egy interaktív python alapú környezet, amit táblázatkezelő helyett lehet használni, ha a python jobban kézre áll. Sosem használtam, majd mások kijavítanak ha butaságot beszélek. Link: https://jupyter.org/
Az LO-nak megadható SQL-adatforrás, tehát akár ő maga is kérdezhet adatbáziskezelőt. De ha CSV-k a bejövő adatok, akkor van még egy eretnek javaslatom az eddigi javaslatok összefésülésére:
csvq, vagy csvkit (de van még pár hasonló), ezekkel SQL parancsokkal lehet CSV-fájlokat pisztergálni - azaz jól scriptelhető a feldolgozás :-)
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
python / pandas / Dataframe https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataF…
igaz nem LO, de ugyis inkabb programozni szerettel volna.
excel es csv fileokat irhatsz/olvashatsz dataframebol/be konnyen.
sql tapasztalattal a dataframe muveletek erthetobbek, mint az LO: excel szeru fuggvenyei szerintem.
Nekem is a Python-os pandas lenne a javaslatom. A read_csv siman betolt csv-t (a konkret varians, szeparator karakter, plusz header sorok szama es tarsai parameterezhetoek), a read_excel meg ugyanigy xlsx-et. Oszlop szamra konverzio egyetlen parancs, ',' pontra csereje, tipusmegadas es minden egyeb is eleg egyszeru.
Onnantol, hogy megirtad a konvertert (inputtol fuggoen lehet, hogy automatikusan is fel tudod valami alapjan ismertetni, hogy melyikhez melyik kell), a tobbit (szamolas, grafikon) mar kezelheted egyben.
Egyebkent tobb olyan feladatom volt, amikor volt valami szamolasom LO Calc-ban, aztan meguntam, es PHP vagy Python scriptkent vegezte. Elsore bonyolultabbnak tunik, de nem veletlenul vannak programozasi nyelvek. :)
Raadasul amiota az LLM-ek eleg jol generalnak scripteket, meg ez sem lehet problema. (ChatGPT-tol ha kerdezel valami matek problemat, general belul egy python kodot, lefuttatja, es a valaszt kiirja)
A strange game. The only winning move is not to play. How about a nice game of chess?
Köszönöm mindenkinek, jó sok ötlet érkezett.
Azt, amit eddig csináltam, ezentúl gyorsabban és egyszerűbben is tudom csinálni, szóval ez mindenképp haladás.
A Python pandás dolgot megnézem, mert tetszik az ötlet.
Kimenetként egy egyszerű csv-t akarok egyébként előállítani (minden bejövő formátum ugyanarra a köztes formára fésülődik), amit aztán a kiértékelő program beolvas és feldolgoz. A kiértékelő programot nem én írtam, csak csv-t olvas, szóval az én feldolgozásom outputja adott.
disclaimer: ha valamit beidéztem és alá írtam valamit, akkor a válaszom a beidézett szövegre vonatkozik és nem mindenféle más, random dolgokra.
Gyorsítás az 1-hez (a Munkalap1A1:A3518 cellájára vonatkozó hivatkozást akarsz a Munkalap2. A1:A3518-ra beszúrni) - ez csak az adatbevitelt gyorsítja és teszi kevéssé elronthatóvá
- a Munkalap2-n a bal felső sarokba beírod, hogy A3518 ENTER - ezzel lemégy a terület aljára
- Shift + Ctrl + Up, kijelölöd az oszlop tetejéig (feltételezve, hogy üres az oszlop; ha nem, akkor a legalsó létező tartalomig jelöli ki, ekkor még párszor kell ugyanez a kombó)
- a Ctrl nyomvatartása mellett rákattintasz az A1 cellára - ekkor a kijelölés megmarad, de már az A1 lesz az aktuális cella (A3518 helyett)
- belekattintasz a szerkesztőmezőbe, és beírod a hivatkozást =Munkalap1.A1
- és ez a lényeg: Alt-Enterrel zárod le - ettől mindenhova bemásolja a képletet, pont ahogy a "lehúzáskor" tenné
- van egy hibája (?), A1 üresen marad, szóval még 1x be kell gépelni a képletet :-( - azt nem tudom, hogy ez hiba-e vagy netán az Excel is ilyen hülyén viselkedik - a Gnumeric pont ugyanezt csinálja, bár ott Ctrl-Enter kell neki az Alt-Enter helyett (ha viszont fölülről lefele jelölöm ki a cellákat, akkor mindenhova beírja a képletet az LO és a Gnumeric is)
Tapasztalatom szerint ez sokkal gyorsabb, mint a lehúzással másolás, és sokkal kevésbé lehet elrontani.
Gyorsítás a 3-hoz:
- Kijelölöd az oszlopot a sok 'számmal.
- Ctrl-C,
- kiválasztod egy üres oszlop legfelső mezőjét. Jobb egérgombbal belekattintasz, irányított beillesztés, szám.
- Kapsz az eredetivel megegyező kijelölt cellát, de már számokkal. Ha jó így, készen vagy. Ha az eredeti adatokat akarod helyrepofozni, akkor folytatod:
- Nyomsz egy Ctrl-X -et (ezzel a kijelölve maradt szám mezők törlődnek)
- visszakattintasz az eredeti cellába és Ctrl-V - és már le is cserélted a 'szám értékeket szám-ra
(vagy ha elég hogy egy másik oszlopban már jók a számok, akkor oda ezt a képletet írod: =A1+0 - vagy =A1*1 - ez már automatizálható)
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Ha a programozással is kacérkodsz a témában akkor esetleg a Goggle Sheets + Google Apps Script is lehet egy irány: https://developers.google.com/apps-script
Javasolt Google keresőkulcs: "Data processing in Google Sheets with Google Apps Script"
Megy az ingyenes fiókkal is!
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox