» »

Excel kalkulacije - preko virtualke ipd.?

Excel kalkulacije - preko virtualke ipd.?

1
2
»

mirator ::

Samo zanima me, zakaj te moj predlog, da tabelo razbiješ na več zvezkov, ne zanima.
En zvezek imaš lahko samo za vnos podatkov, tabelo z rezultati pa razdeliš na več zvezkov. Ko delaš, imaš lahko odprte vse zvezke, računalnik pa bo obremenjen samo z zvezkom, ki ga boš imel v obdelavi.

Zimonem ::

mirator je izjavil:

Samo zanima me, zakaj te moj predlog, da tabelo razbiješ na več zvezkov, ne zanima.
En zvezek imaš lahko samo za vnos podatkov, tabelo z rezultati pa razdeliš na več zvezkov. Ko delaš, imaš lahko odprte vse zvezke, računalnik pa bo obremenjen samo z zvezkom, ki ga boš imel v obdelavi.

Ker je pristop povem napačen, vsak Excel tutorial ga odsvetuje.

mirator ::

Tega pa nisem vedel. Vseeno pri meni takšen način lepo deluje.

omni-vor ::

111111111111 je izjavil:

Kakšen pa imaš pogoj v if?

Nič posebnega ni v formuli. =(COUNTIF($A$1:$AI$45000;A1))

Štejem duplikate po vseh celicah. Zanima me kolikokrat se pojavi podatek iz A1 v vseh celicah. In potem podatek iz B1, C1, D1...AI1.
Na koncu pa seštevek vseh duplikatov v tej vrstici. In tako naprej za vsako vrstico posebej.

Je pa v celicah tekst oziroma kratice in ne številke. Mogoče ga to "zmatra".
Ni nobena skrivnost, sej zato pa sem priložil sliko malo višje. Je čisto hobi, ni pa za službo.

Bom danes za hec tole spravil v Access.

Kdor je naveličan te teme, ne rabi odgovarjat. Sem samo vprašal za nasvet, dali ste mi jih že kar nekaj.

joze67 ::

omni-vor je izjavil:

111111111111 je izjavil:

Kakšen pa imaš pogoj v if?

Nič posebnega ni v formuli. =(COUNTIF($A$1:$AI$45000;A1))

To in to:

omni-vor je izjavil:

gtfo: formula se ponavljajo samo na tak način, da se vsaka formula sklicuje na podatek v svoji vrstici.


ne gre skupaj. Občudujem ljudi v oddelkih podpori strankam, ki morajo take nebuloze prenašati dnevno.

Ti imaš 50.000 vrstic s po 40 stolpci, torej 2M celic. Za vsako poženeš COUNTIF čez vseh 2M celic. To je 4T operacij. I5 tu nima veze.

Pravilni postopek tukaj je, da podatke urediš in prešteješ, kolikokrat se kak podvoji. Pri čemer bo malo razlike, ali pričakuješ veliko podvajanj, malo podvajanj ali (najslabše) nekaj vmes

showsover ::

To nima smisla, potem mora imeti še eno matrki enake velikosti.
Izvorno in nespremenjeno s podatki.
Sekundarno s countif za vsakega od podatkov v tej osnovni matriki.
Po mojem mnenju gre tu za neko nerazumevanje.
Verjetno je že kdo prej delal na tem in se zaplezal.
Kakorkoli, nekdo je izbral napačno orodje za nejasno rešitev.

Imam malo močnejšo mašino :) pa zadeva ravno tako počepne.

Zgodovina sprememb…

  • spremenilo: showsover ()

joze67 ::

precomputation se temu reče in ima globok smisel. 4 biljone operacij bo terjalo svoj čas, oziroma algoritem, kot ga ima, je O(n^2) (če se ne skriva notri še kakšna mina). Torej, če ne uporabi O(n logn) algoritma, je stvar časovno neuporabna in je potem vseeno, ali so podatki spremenjeni, podvojeni ali kaj tretjega.

Invictus ::

Zakaj toliko COUNTIFov?

Sigurno niso potrebni.

Sicer pa malo bolj opiši problem.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

showsover ::

joze67 je izjavil:

precomputation se temu reče in ima globok smisel. 4 biljone operacij bo terjalo svoj čas, oziroma algoritem, kot ga ima, je O(n^2) (če se ne skriva notri še kakšna mina). Torej, če ne uporabi O(n logn) algoritma, je stvar časovno neuporabna in je potem vseeno, ali so podatki spremenjeni, podvojeni ali kaj tretjega.

Razumem in se strinjam, pač iz te 35x45000 (1,6M) matrike se izračuna pojavnost vsakega posamičnega (!) elementa. V resnici bi se morali poiskati vsi različni elementi iz matrike, izračunati pojavnost in potem vpisati v prekomputirano tabelo (a je še potrebna?) iz te cachiranega slovarja pojavnosti. Sicer stvar ni trivialna (no, za zverzirane programerje je:) je pa vsekakor izvedljivo. Ampak do sem smo prišli šele, ko smo začeli reševati konkretno, ker bi bilo fino, da je to razlozeno na zacetku. Kakorkoli, to bi zmogel celo Excel, če bi se pravilno lotili problema, ne pa bruta-forza statistika.

Zgodovina sprememb…

  • spremenilo: showsover ()

showsover ::

Se opravičujem, kosilo je bilo vmes, kava in to, torej povzetek (zadeva vzame, oh ne, nekaj sekund, s parsanjem, slovarjem in pripravo outputa), sfakeal sem osnovno matriko 35*45000 zapisov z enakomerno distribucijo 0-100 (osciliranje frekvenc okoli 15750), s skripto (niti ne v excelu), output frekvenc v tem smislu.

15858	15804	15783	15665	15903	15928	15907	15907	15652	15717	15498	15815	15622	15511	15498	15887	15772	15394	15394	15888	15894	15768	15661	15580	15630	15815	15712	15643	15758	15968	15643	15780	15815	15661	15702
15782	15521	15772	15968	15634	15854	15606	15749	15715	15834	15572	15709	15772	15762	15839	15614	15860	15709	15785	15760	15789	15772	15782	15887	15511	15511	15606	15394	15702	15888	16002	15716	15630	15695	15867
15772	15804	15875	15887	15903	15901	15901	15762	15509	15712	15572	15906	15906	15789	15928	15572	15780	15860	15770	15945	15557	15906	15652	15939	15772	15834	15719	15839	15882	15768	15903	15893	15907	16002	15815
15901	15649	15719	15800	15762	15638	15712	15903	15717	15906	15860	15630	15772	15800	15785	15498	15815	15939	15649	15906	15716	15789	15709	15717	15719	15875	15745	15606	15854	15585	15749	15882	15887	15836	15665
15786	15712	15717	15770	15778	15585	15725	15875	15775	15715	15770	15712	15882	15557	15652	15668	15712	15760	15782	15750	15623	15786	15834	15887	15887	15782	15875	15750	15907	15664	15766	15804	15778	15758	15854
15580	15606	15771	15772	15778	15772	15800	15815	15772	15580	15665	15768	15668	15709	15766	15768	15770	15975	15770	15585	15715	15394	15691	15945	15716	15765	15691	15664	15511	15939	15749	15702	16002	15702	15907
15634	15719	15557	15887	15643	15745	15893	15719	15793	16002	15975	15597	15775	15672	15765	15939	15789	15585	15668	15749	15778	15778	15893	15834	15709	15498	15858	15975	15834	15867	15766	15780	15772	15793	15854
...


OP, poslji mi podatki, ti nazaj posljem prekalkulacijo, ne da se mi vsega skupaj razlagat, posiljat itn.

omni-vor ::

showsover je izjavil:


Imam malo močnejšo mašino :) pa zadeva ravno tako počepne.


Hvala za tvoj trud, test in nasvet :)

joze67 je izjavil:


Občudujem ljudi v oddelkih podpori strankam, ki morajo take nebuloze prenašati dnevno.


Hvala za tvoj nasvet in komentar. Ampak tale del zgoraj pa bi lahko izpustil... Ljudje na oddelkih za podporo strankam lahko prenašajo take nebuloze zato, ker imajo empatijo, zmožnost razmišljanja o tem da nismo vsi enaki in nekateri ste boljši v enem, drugi pa v drugem.
Sploh pa tudi ti si nekje začel s pridobivanjem znanja in verjetno si se v lajfu neštetokrat zaplezal preden si našel rešitve. Tako da tole zgražanje ni primerno.

Sem pač zabluzil in pišem nebuloze na forumu kjer ljudje iščejo nasvete drugih ljudi. Shoot me.

Drgač pa še enkrat hvala za tisti drugi del tvojega posta.

Zgodovina sprememb…

  • spremenil: omni-vor ()

omni-vor ::

joze67 je izjavil:

precomputation se temu reče in ima globok smisel. 4 biljone operacij bo terjalo svoj čas, oziroma algoritem, kot ga ima, je O(n^2) (če se ne skriva notri še kakšna mina). Torej, če ne uporabi O(n logn) algoritma, je stvar časovno neuporabna in je potem vseeno, ali so podatki spremenjeni, podvojeni ali kaj tretjega.


Ne bom nadaljeval z delom v Excelu, ker vam verjamem, da ni primerno orodje za moj problem. Bom poiskal drugo rešitev, nekaj ste jih že sami napisali. Odnehal pa ne bom :)

EDIT: šele zdaj sem prebral komentar od gtfo... ti pošljem

Zgodovina sprememb…

  • spremenil: omni-vor ()

showsover ::

Ok, tako mimogrede, problem rešen (menda), potrebovalo je 0,657 sekunde ;)

omni-vor ::

haha hvala gtfo, ne morem verjeti :D

res je, problem rešen, kar zaprimo temo :)

showsover ::

Glej, da ne bo zdaj priletela kakšna jedrska bomba, izgleda že kot neki deli aktivacijske šifre.
Ali pa da ne bo kak Frankenstein ozivel s tem nukleotidi ali kaj so že.

omni-vor ::

hahaha :) NSA in SOVA me imata pod kontrolo

showsover ::

Če bi dal zraven še FURS pa bi se res težko še bolj konkretno izpostavil. :)

HotBurek ::

Proces ste optimiziral in čas zmanjšali iz 24 ur na 1 sekundo?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

omni-vor ::

tako je...ne 24 ur, prej 48 ur.

Tako dober je gtfo

Zgodovina sprememb…

  • spremenil: omni-vor ()

HotBurek ::

Odlično. Čestitam za tak rezultat.

Zanimivo, kolikokrat lahko programer in logika pohitrijo proces, v primerjavi z več hardware-a; prvo je x1000, drugo pa bolj kot ne linearno z nabavo opreme.

Za razmislit kje in na kakšen način se "splača" optimizirat nek process, ki traja predolgo...
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

showsover ::

Omni-vor, ok ampak me ni potrebno hvalit', sem zelo preprost človek in sem že veliko časa v tej panogi... Potrebno je primerno razložit problem nekomu, ki se mu da poslušati in ima veselje, da ga reši, ker je tole pač bilo hobi, a ne. Mimogrede, tudi Jožetu grejo nekatere zasluge s tistimi številom operacij O(n logn), kar je precej lepše formaliziral kot sem jaz. Verjamem, da se da še izboljšati performanse (ker gre za eno skripto, ne za izvršilen utility) ampak tole ni bistveno.

Zgodovina sprememb…

  • spremenilo: showsover ()

Iluvatar ::

Če se ti da, bi prosil, če lahko na kratko opišeš problem in kako si rešil zadevo (jezik, orodje ipd...), da se še drugi kaj naučimo. Hvala.

showsover ::

Narejeno je v html za uporabnikov input in javascript za procesiranje, iz Excela vzames vrednosti (copy/paste), razrežeš tekstualni input v matriko, uporabiš slovar (vrednost, frekvenca), iteriraš vse vrednosti, ažuriraš števec, potem zgeneriraš (in skopiraš v Excel) matriko iste strukture kot vhodna, samo namesto da zapišeš vrednost, uporabiš frekvenco, ki jo prebere iz slovarja. Glavna stvar je - slovar s hitrim iskanjem, da se izogneš odvečnemu izvajanju formule. Vrstni red ni pomemben. Vsak sprufan programer pa ve ali bi moral vdeti, kaj pomeni O(n logn) :-)

Zgodovina sprememb…

  • spremenilo: showsover ()

Iluvatar ::

showsover je izjavil:

Glavna stvar je - slovar s hitrim iskanjem, da se izogneš odvečnemu izvajanju formule.

Tu sem zdaj zaštekal, v čem je bil problem. Sicer si prej že zgoraj napisal, samo mi ni “potegnilo” takrat. Hvala za razlago.

Randomness ::

potrebovalo je 0,657 sekunde
Hehe, sem rekel nekaj 100 milisekund max.

Zimonem ::

showsover je izjavil:

Narejeno je v html za uporabnikov input in javascript za procesiranje, iz Excela vzames vrednosti (copy/paste), razrežeš tekstualni input v matriko, uporabiš slovar (vrednost, frekvenca), iteriraš vse vrednosti, ažuriraš števec, potem zgeneriraš (in skopiraš v Excel) matriko iste strukture kot vhodna, samo namesto da zapišeš vrednost, uporabiš frekvenco, ki jo prebere iz slovarja. Glavna stvar je - slovar s hitrim iskanjem, da se izogneš odvečnemu izvajanju formule. Vrstni red ni pomemben. Vsak sprufan programer pa ve ali bi moral vdeti, kaj pomeni O(n logn) :-)


Se pravi smo iskal funkcijo frequency v Excelu.

showsover ::

Menda pa res, zanimivo; op - preveri, če je to dovolj za tvoje potrebe.
V vprašanjih se je dobro izogniti namigom za neke rešitve, sploh, če niso dodelane.
Najbrž smo res prišli od najema virtualk preko skripte nazaj v Excel.
Skripto bom pač (posredno) dodal v svoj online repositorij besedilnih storitev.

showsover ::

Zimonem, sem šel preskušat - FREQUENCY je sicer podobno, vendar ne rezultira v enakovredni matrike:

Vhodni podatki			Želen rezultat		
0	1	0		6	1	6
3	2	0		2	3	6
3	2	2		2	3	3
0	0	0		6	6	6


Če pa ti uspe isto doseči s FREQUENCY, se pa dam podučiti.

Zgodovina sprememb…

  • spremenilo: showsover ()

Zimonem ::

Sem sprobal samo na phone Excelu. Frekvence držio, potem sledi samo replace na podane vrednosti če jih hočeš v danem formatu(matriki).

showsover ::

Ja, izračun frekvenc drži, ampak rešitve out-of-the-box ni videti za potrebe op...
In search in replace za (opjevih 35x45500) 1,6M zapisov in to vertikalno v enem stolpcu... Vprašanje...
Najbrž si samo domišljam ampak skripta se mi zdi vseeno lažji pristop, ker vse sama uredi (predvsem ta search/replace),
je pa copy/paste vse matrike iz in nazaj v excel ostane uporabniku v kratek čas.
Sicer se tudi skripto se pretvori v vba/excel v FREQUENCYTOMATRIX(), re, če se izkaže potreba.
In motivacija 🤑🤑🤑🤑🤑 :)

Zgodovina sprememb…

  • spremenilo: showsover ()

Zimonem ::

Lohk da je skripta hitrejša. Preden nisi opisal rešitve mi sploh ni bilo čisto jasno, kaj hoče. Vse skupaj je zvenelo skrivnostno kot da analizira radijske valove od alienov.
Replace pa itak jemlje samo prve unique elemente. Meni je tole bolj zanimivo kot vaja v slogu. A vseeno ne je malo zaskrbelo da to Excel nebi rebavil če ne gre za križ kraž skliče. Saj je mestoma butast ampak večkrat smo uporabniki v spregi.

Zgodovina sprememb…

  • spremenilo: Zimonem ()

Zimonem ::

Upam na bogato nagrado.

DeeCoy ::

Mogoče bi uporabil kakšen Octave, bolj primeren za obdelovanje velikih količin podatkov, sploh v matrikah itd. - nisem bral cele teme, samo ideja. Je pa res, da je potrebno vsaj neko čisto osnovno znanje programiranja.

omni-vor ::

Zimonem je izjavil:

Se pravi smo iskal funkcijo frequency v Excelu.


Frequency sem tudi že sprobal čisto na začetku in ni bilo ok, se pa ne spomnim več zakaj ne, ker sem že toliko stvari preizkusil :) Bom ob šansi preveril kaj je bil že razlog, da sem opustil freq.

edit: med tednom malo težje spremljam forum, zato zamuda pri odgovoru.

Zgodovina sprememb…

  • spremenil: omni-vor ()

pegasus ::

DeeCoy je izjavil:

Mogoče bi uporabil kakšen Octave, bolj primeren za obdelovanje velikih količin podatkov, sploh v matrikah itd. - nisem bral cele teme, samo ideja. Je pa res, da je potrebno vsaj neko čisto osnovno znanje programiranja.
Octave je najpočasnejša možna izbira, še R je hitrejši. Če že kaj, potem Julia.

showsover ::

No, za zaključek, nova uporabniška Excel funkcija "=FREQUENCYMATRIX(SourceRange,TargetRange)" vrača (izgleda) povsem enak rezultat direktno v excel tabeli, vendar je malo počasneje, potrebuje slabe 4 sekunde

> UniquesCount: 1591590 values of 4556 unique in 734 ms
> FrequencyMatrix, 4556 uniques: 1591590 values in 3563 ms

Ok, to je to na to temo, kar se tiče mene, mi je bila všeč ideja z virtualkami :)

Zimonem ::

showsover je izjavil:

No, za zaključek, nova uporabniška Excel funkcija "=FREQUENCYMATRIX(SourceRange,TargetRange)" vrača (izgleda) povsem enak rezultat direktno v excel tabeli, vendar je malo počasneje, potrebuje slabe 4 sekunde

> UniquesCount: 1591590 values of 4556 unique in 734 ms
> FrequencyMatrix, 4556 uniques: 1591590 values in 3563 ms

Ok, to je to na to temo, kar se tiče mene, mi je bila všeč ideja z virtualkami :)

Rajtam, da je še zmer hitrej kot najem virtualke.

omni-vor ::

showsover je izjavil:

No, za zaključek, nova uporabniška Excel funkcija "=FREQUENCYMATRIX(SourceRange,TargetRange)" vrača (izgleda) povsem enak rezultat direktno v excel tabeli, vendar je malo počasneje, potrebuje slabe 4 sekunde

> UniquesCount: 1591590 values of 4556 unique in 734 ms
> FrequencyMatrix, 4556 uniques: 1591590 values in 3563 ms

Ok, to je to na to temo, kar se tiče mene, mi je bila všeč ideja z virtualkami :)


OK eat me alive, ker sem dal idejo z virtualkami :P Je pač obstajala neprimerno boljša rešitev za katero nisem vedel.

FREQUENCYMATRIX sicer ne znam pognat v Excelu, hitro googlanje najde samo v povezavi s pythonom...sem pa probal Frequency v Excelu in mi nekaj ne gre-verjetno isti problem kot takrat, s katerim sem se srečal ko sem prvič poskušal...neznanje.

Bom že zguglal rešitev do konca. Zdaj vsaj vem kje jo iskat glede na to, da je gtfo potrdil, da deluje za moj primer.

showsover ::

FrequencyMatrix() je nova uporabniško definirana funkcija kot razširitev za Excel, zaenkrat je samo prototip, ni še del excela, bo pa verjetno kak addin. Zadeva pa deluje, je pa vba precej počasen. I shit you not, tiste meritve so na osnovi poslanih podatkov, 1.6M. Če e se bo zadeva tudi prijela, boš svetovalec za virtualske kalkulacije :)

omni-vor ::

Kako si pa ti prišel do tega? Kot kak developer, ker maš ekstra dostop do beta verzij?

Zimonem ::

omni-vor je izjavil:

Kako si pa ti prišel do tega? Kot kak developer, ker maš ekstra dostop do beta verzij?

Sam je spisal. Frequency je vzel za dictionary v VBA makru. Z slovarjem je potem pomenjal vrednosti v ciljni tabeli. Če se malo pomatraš ti mora ratat.

showsover ::

Joj no, omni-vor, addin zaenkrat ni uraden iz M$ Office marketplace, če pa bo, pa super.
Zimonem, ja, načeloma drži, je pa potrebno poznati delovanje funkcij malo boljše ampak res ni ničesar, kar ni možno izguglati, hehe.
Navsezadnje gre za branje, obdelavo in zapis 1,6M vrednosti v slabih 4 sekundah, v eni sami funkciji, se pravi nekje 0,4M na sekundo.
Domnevam, da je to sprejemljiva hitrost, če pa ni, pa tough luck.

Zgodovina sprememb…

  • spremenilo: showsover ()

omni-vor ::

OK.
1
2
»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

pomoč excel (strani: 1 2 )

Oddelek: Programska oprema
587986 (3563) -JM-
»

Excel, kako izračunati

Oddelek: Programiranje
82326 (2065) Dionis
»

Excel iskanje podvojenih vnosov

Oddelek: Pomoč in nasveti
186589 (5215) smetko
»

excel

Oddelek: Programska oprema
324788 (3397) xtrat
»

excell razvrščanje

Oddelek: Programska oprema
214139 (3783) rferrari

Več podobnih tem