Forumul de comerț Poul despre cum să măriți viteza lucrului în Excel


Nu știu cum este implementată actualizarea. )
Dar pot să presupun că Excel reamintește formulele cu fiecare date de actualizare primite, cuantificate ca ceva sau ceva de genul.






Acest lucru încetinește foarte mult. În momentul actualizării din fișierele text (macro), macrocomanda oprește recalcularea automată din carte și apoi o pornește din nou. Numai rezultatul final cu date complet actualizate este recalculat.
Acest lucru se face aproximativ în felul următor:

Sub test ()
'dezactivați renumele automate în carte
Aplicație.Calculare = xlManual

"corp de date de import și preprocesare macro

"permite recalcularea automată în carte
Application.Calculation = xlAutomatic


. De asemenea, presupun citate despre DDE în acest moment? Sau MT să includă după actualizarea de la fișierele text, sau link-uri de formula pe MT în celule pentru a șterge, și apoi o macro pentru a restabili.


Nu, am tăiat ghilimele DDE în acest moment, altfel calculatorul ar fi îndoit. Și atunci când luați kotirovok aproape nici o smochină nu mai poate face. Cu importul, funcția de actualizare a formulei este activată. Faptul este că, dacă este să opriți, atunci când adăugați o linie nouă în ea nu copiază formula, care lângă date, și apoi totul trebuie să facă totul manual și anume Copiați formulele pe o linie nouă. Probabil toate la fel, ai dreptate, caz în care ar trebui să încercați să scrie un macro care va rula după importul, și dezactivați opțiunea în sine, și apoi bine, l nafig cu o astfel de performanță.


În opinia mea, în general, este necesar (dacă este posibil în principiu) să obțineți mai întâi datele în Excel și apoi să le procesați. Și, în opinia mea, este mai bine să faceți totul cu VBA.
Amenințare să aștepte o jumătate de oră - nici un moment, și întrebarea „ce nu voi ști“, în opinia mea, o soluție bună - a pus un computer separat pentru a primi date.

--------------------
Puii mici-labradori au fost dați în mâini bune, dar pranksterii nu stau în picioare și se hotărăsc să fugă.

Toate acestea au fost deja implementate.


Vă mulțumesc tuturor pentru sfatul dumneavoastră. Am făcut un pic diferit, toate textele citate fișierele de istorie este conectat la aktskssu prin interogările SQL create cu pre-tratament și le-au aruncat pe Excel folosind același SQL pentru decontare finală. Ie Axxx este folosit ca un container intermediar pentru stocarea datelor. Totul a lucrat mai multe comenzi mai repede. Cât de mult sufletul se bucură.

Pentru nofx, este posibil ca totul să fie programat în VBA până la formule. Dar în practica mea a existat un caz. Descărcați pribludy pentru construirea rapidă a matricelor de corelare, care au fost implementate în VBA. Sa dovedit că matricea corelațiilor efectuate cu ajutorul formulelor încorporate funcționează mai repede decât codul. Eu sunt în favoarea faptului că nu pentru toată lumea, mai ales pentru ceaiuri, totul este implementat în cod. Uneori, dintr-o minte minunată nu vă puteți îmbunătăți, dar vă puteți agrava.


formulele din celule funcționează mai repede decât calculele pe VBA. Eu fac acest lucru - macro-ul intră în formula din celulă >> se extinde până la sfârșitul intervalului >> formulele din celule sunt înlocuite cu valorile.







Pentru a verifica viteza diferitelor variante de efectuare a aceleiași sarcini, puteți utiliza macrocomanda:

Sub Test () 'macro de măsurare a runtime-ului
t = Timer
'' ''
Apelați Test2 "rulați o macro pentru care se măsoară viteza de lucru
'' ''
MsgBox (Timer-t) * 1000 "Msec"
End Sub


„Este foarte posibil ca toate programarea necesară în VBA până la formule. Dar, în experiența mea, are un caz. Downloadat pribludy pentru a construi rapid matrici de corelație, care au fost puse în aplicare în VBA. Sa dovedit că matricea de corelații realizate cu ajutorul built-in formule mai repede decât codul. Vreau să spun că nu este pentru toată lumea, în special pentru oameni ca mine ceainice, toate realizabile în codul. Uneori, nu se poate îmbunătăți și agrava de la o minte mare ".

Într-adevăr, funcțiile de tabelă poate rula rapid mai repede decât cu tabelul sub formă de cod VBA, dar nimic nu ne împiedică să numim aceste același tabel (nu VBA) funcție în ceea ce privește o matrice sau un interval folosind WorksheetFunction

Dar cât de mult înțeles astupare principal nu este viteza de formulele și linia de umplere cu termenii din fiecare linie, astfel încât ar putea îmbunătăți în mod semnificativ viteza prin formarea și trimite tabelele de date în matrice și apoi matrice, mai degrabă decât rând cu rând într-un tabel, iar masa a numărat toate Formula One timp.

Dar ați ales o opțiune mai serioasă.


Băieți, Nid Ajutor. Este necesar ca ultimele 50 de linii din "tabelul Quik al tuturor tranzacțiilor" să fie trimise în Excel. De-a lungul mesei, calculul este prea lung.

Varianta cu DB este de înțeles, credeam că vrei să spui direct trimiterea și nu înțelegi cum.

Ei bine, dacă sunteți mulțumiți (deși decizia este suficient de irațională), puteți face acest lucru. Într-o singură masă (mai exact o foaie) ieșire de la Kvika ca și acum. Dacă există cel puțin o formulă, atunci adăugarea fiecărei linii va fi recalculată. Folosim în acest caz foile de lucru Calculați foaia în care rulează TVS. În cazul în care nu există formule, reporniți cronometrul.

Scrierea în VBA macro care ia extreme inferioare 50 rânduri ale tabelului din intervalul (utilizarea LAstUsedRow) și scrie întreaga gamă pe o altă foaie. Rulați-o așa cum este descris în paragraful anterior.

Ca urmare, mi-e teamă că veți avea un conector în momentul macro t la fluxul TVS este foarte gravă.


Spune-mi dacă pun un semn. mod de DDE la ieșire Excel (on-line), masa tuturor tranzacțiilor, ca de obicei, datele încep să completeze linii în Excel în ordine, de sus în jos și apoi modul în care un ecran, de exemplu, într-o altă foaie ultima șir de caractere primit, va fi mai ușor decât varianta cu 50 linii, cum poate fi implementat acest lucru?


Ca răspuns la.
STMakler a scris:
Spune-mi dacă pun un semn. mod de DDE la ieșire Excel (on-line), masa tuturor tranzacțiilor, ca de obicei, datele încep să completeze linii în Excel în ordine, de sus în jos și apoi modul în care un ecran, de exemplu, într-o altă foaie ultima șir de caractere primit, va fi mai ușor decât varianta cu 50 linii, cum poate fi implementată aceasta?


scrieți un script pentru kvik pe font (servietă). care va procesa în tabela de coadă toate tranzacțiile în numărul de rânduri de care aveți nevoie și apoi exportați din portofoliu pentru a excela


Ca răspuns la.
Ptem a scris:
scrieți un script pentru kvik pe font (servietă). care va procesa în tabela de coadă toate tranzacțiile în numărul de rânduri de care aveți nevoie și apoi veți exporta din portofoliu pentru a excela


Deja scris un scenariu, dar întârzierea în datele actuale pentru aproximativ 5 minute, se pare, în Excel destul de ciudat este mai rapid, dar în mod constant derulați pentru a vedea ultima valoare este foarte inconfortabil, dar cel mai important lucru este faptul că este imposibil să se deducă ultima linie pentru prelucrare ulterioară, datele sunt alimentate în mod continuu și recent, valoarea va fi întotdeauna într-un alt rând Excel se va muta mereu în jos. Trebuie cumva să Excel pentru a înțelege în cazul în care ultima linie, și au tras-o în afară.


Ca răspuns la.
STMakler a scris:
. este necesar să facem într-un fel excelentele înțelese acolo unde există o ultimă linie și au dedus-o separat.

--------------------
Puii mici-labradori au fost dați în mâini bune, dar pranksterii nu stau în picioare și se hotărăsc să fugă.







Trimiteți-le prietenilor: