Accelerarea activității în Excel: sfaturi utile, funcții, comenzi rapide. Sfat Excel numărul TREI. Funcții și combinațiile lor care trebuie stăpânite. Combinații de taste rapide

Deschidere lungă Fișiere Excel poate apărea din cauza:

  • multă formatare aplicată tabelului
  • probleme cu imprimanta
  • prezența obiectelor ascunse
  • Nu utilizare rezonabilă formule
  • dimensiune mare a fișierului, cu o cantitate mică de date utilizate
  • si Dumnezeu stie ce alte probleme.
Toate aceste frâne pot fi corectate, cu excepția, poate, a ultimei.

Scaparea de frane in Excel

Disponibilitate sumă uriașă formatarea încetinește semnificativ Excel lucru
Imaginați-vă un tabel cu 65.000 de rânduri și 50 de coloane. Fiecare celulă are culori diferite, un font unic și o dimensiune a textului. Crezi că cursorul se va mișca rapid printr-un astfel de fișier? Dacă nu aveți un MainFrame, atunci este puțin probabil.
Încercați să completați doar ceea ce trebuie completat. Nu aplicați formatarea unei întregi coloane sau rânduri dacă puteți selecta doar numărul necesar de celule. Ei bine, dacă dați peste un astfel de fișier „formatat”, atunci Excel are un buton minunat - Clear Formats

Excel poate încetini, de asemenea, din cauza problemelor cu imprimanta.
Mai precis, dacă imprimanta care este selectată implicit în editor nu este conectată. Dar această problemă este tipică pentru Excel 2007 și mai vechi. În acest caz, lansarea fișierului este foarte lentă. Acest lucru poate fi corectat selectând o nouă imprimantă funcțională sau pornind una care nu funcționează. Sau instalarea implicită imprimantă virtuală„Microsoft Document XPS Scriitor"

Prezența obiectelor ascunse
Obiectele ascunse pot apărea în tabel ca urmare a copierii datelor dintr-un alt fișier. Mai mult, obiectul este transferat cu dimensiuni zero, motiv pentru care nu este vizibil atunci când este selectat. Dacă există un număr mare de ele, acest lucru poate încetini semnificativ munca.
Deschidere dosar problematicși asigurați-vă că putem găsi și evidenția obiecte ascunse. Pentru a face acest lucru, apăsați Alt+F11, se va deschide Editor Microsoft Visual Basic. Apăsați F4, selectați ThisWorkbook din lista derulantă și setați valoarea -4104 -xlDisplayShapes în câmpul DisplayDrawingObjects. Apoi, pe Foaia Excel, executați Acasă - Găsiți și Selectați - Selectați un grup de celule - Obiecte, faceți clic pe OK și apoi Șterge cheia. Desigur, este mai bine să faceți o copie a fișierului și să exersați pe el.

Supraîncărcare cu formule
Dacă documentul este mare, cu mai multe foi și se realizează agregarea datelor pentru unele dintre ele, atunci calculul pe mașini slabe, laptopurile și netbook-urile vor fi lente și lungi. Dacă documentul este „al dumneavoastră” și poate fi refăcut, atunci este recomandabil să înlocuiți formulele neutilizate cu valori. Se face așa. A evidentia intervalul necesar celule, faceți clic dreapta și selectați Copiere.

Și, de asemenea, faceți clic dreapta pe acest interval selectat, selectați Inserție specialăși specificați Valorile. Acest lucru reduce numărul de formule pe care Excel trebuie să le folosească pentru a efectua calcule.

De asemenea, nu uitați să utilizați formule mai rapide:
Utilizați IFERROR, funcționează combinatii mai rapide DACA + EOSH
Utilizați -- pentru a converti valorile booleene în zerouri și unu.
Este de preferat să folosiți combinația INDEX + MATCH în loc de VLOOKUP
MAX(A1;0) funcționează mai rapid decât IF(A1>0;A1;0)

Timp mare de deschidere datorita dimensiunilor mari
Mai mult, se întâmplă adesea ca cantitatea de date din tabele să nu corespundă proporțional cu dimensiunea fișierului. Acesta din urmă este cel mai adesea mai mare. Acest lucru se poate întâmpla atunci când fișierul a fost sau este în domeniul public. Când acest mod este setat, Excel păstrează un jurnal de modificări, care include toate modificările pentru perioada specificată în parametri.
Puteți dezactiva sau modifica perioada în Excel 2007 și mai vechi, în fila Revizuire - Acces la carte. Și în fila Detalii setați valorile de care aveți nevoie.

Dacă documentul este salvat în format xlsx sau xls, apoi îl puteți salva în format xlsb. Iar viteza cu care se va deschide fișierul vă va surprinde plăcut. Creșterea vitezei se realizează datorită faptului că toate datele din acest fișier sunt salvate într-un format binar, mai „nativ” Excel, care necesită mai puține resurse pentru a analiza și converti documentul. Pe lângă toate acestea, dimensiunea fișierului va fi mai mică.

Din nou, dacă documentul este salvat în format xlsx și durează mult pentru a se deschide, îl puteți deschide folosind orice arhivator (de exemplu, winrar) și ștergeți folderele de revizuiri și foi de lucru. Prima stochează toate modificările când modul este activat Acces general. Al doilea folder conține imagini. Efectuați aceste operațiuni pe o copie a fișierului. Apropo, dacă există imagini în document, nu uitați să le comprimați. Acest lucru se face prin fila Format - Grupul Editare - Comprimați imaginile și specificați calitatea preferată. Va ajuta la reducerea dimensiunii imaginilor, ceea ce va avea un efect pozitiv asupra dimensiunii fișierului.

Fișierul se poate lansa lent în Excel 2003 și 2007 dacă documentul este deschis dintr-o resursă de rețea. Dar când copiați în calculator local- pornirea este rapidă. Acest lucru poate fi vindecat prin crearea partițiilor lipsă și adăugând valoarea:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Excel\Security\FileValidation (pentru 2007)
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\11.0\Excel\Security\FileValidation (pentru 2003)
Enableonload=dword:00000000
Această opțiune dezactivează funcția de validare a fișierelor Office, care este responsabilă de validarea formatului de fișier binar și de verificarea dacă se potrivește cu formatul de fișier MS Office.

Activați/dezactivați calculul cu mai multe fire
Acest parametru se află în fila Setări - Avansat - Formule. Dacă aveți mai multe nuclee de procesor, trebuie să activați Acest obiectși specificați numărul de fire egal cu numărul de nuclee. Dacă aplicația a încetinit chiar înainte cu parametrul activat, atunci dezactivați-l. În mod ideal, această setare va accelera lucrurile atunci când lucrați cu formule.

Sper că, după toate manipulările, fișierul nu va mai dura mult până se deschide și Excel nu va încetini la pornire.
Și mai jos, foarte interesant și video detaliat cu comentarii despre cum să accelerezi Excel

  • Tutorial

Prefaţă

Se întâmplă că astăzi mulți oameni trebuie să lucreze (să scrie macrocomenzi) în VBA în Excel. Unele macrocomenzi conțin sute de linii de cod care trebuie executate în fiecare zi (săptămână, lună, trimestru etc.) și, în același timp, durează destul de mult. Se pare că procesul este automatizat și nu este necesară intervenția umană, dar timpul necesar executării unei macrocomenzi poate dura zeci de minute, sau chiar câteva ore. Timpul, după cum se spune, este bani, iar în această postare voi încerca să grăbesc semnificativ timpul de execuție al macro-ului dvs. și, poate, acest lucru va avea un efect pozitiv asupra afacerii dvs. și, în cele din urmă, banii.

Înainte de a începe lucrul

Înainte de a ajunge direct la subiect, aș dori să arunc o privire la postarea: Câteva sfaturi pentru lucrul cu VBA în Excel. În special, în blocul „Accelerează macrocomenzi” există exemple utile cod care ar trebui folosit împreună cu sfaturile mele pentru a accelera munca pentru a obține rezultate maxime.

Accelerarea macro-ului

Deci, la obiect... Pentru a accelera cu adevărat munca VBA în Ecxel, trebuie să înțelegeți că accesarea unei celule pe o foaie necesită mult timp. Dacă doriți să scrieți o valoare într-o celulă, nu va dura mult timp, dar dacă trebuie să scrieți (citiți, accesați) mii de celule, va dura mult mai mult timp. Ce să faci în astfel de cazuri? Matricele vin în ajutor. Matricele sunt stocate în memorie, iar VBA efectuează operațiuni în memorie de sute sau chiar de mii de ori mai rapid. Prin urmare, dacă aveți mii, sute de mii de valori în datele dvs., atunci timpul de execuție macro poate dura de la câteva minute la câteva ore, iar dacă aceste date sunt transferate într-o matrice, atunci execuția macro poate fi redusă la câteva secunde (minute).

Voi da un exemplu de cod și voi explica în comentarii ce este, va fi mai clar. În plus, unele linii de cod care nu sunt direct legate de procesul de accelerare pot fi utile.

Exemplu
Să presupunem că avem date pe „Sheet1”. Datele sunt conținute în 50 de coloane (coloanele conțin nume) și 10.000 de rânduri. De exemplu, trebuie să introducem o valoare în ultima coloană care este egală cu valoarea din a doua coloană împărțită la valoarea din a treia coloană (începând cu a doua linie, deoarece prima conține titlul). Apoi vom lua primele 10 coloane și le vom copia în „Sheet2” pentru procesare ulterioară (pentru alte nevoi). Chiar dacă exemplul este banal, mi se pare că poate reflecta întreaga esență a acestei postări.

„Pentru a inițializa în mod explicit variabile, activați această opțiune „Acest lucru va ajuta la evitarea multor erori Opțiune Explicit Sub Test() „Vom accesa foile prin variabilele Dim Sheet1_WS, Sheet2_WS As Worksheet „Variabilă pentru trecerea termenului limită pe foaie (în matrice ) Dim i As Long " O matrice în care datele noastre vor fi stocate Dim R_data As Variant " Variabile ale ultimului rând și coloană Dim FinalRow, FinalColumn As Long " Puteți inițializa foaia nu după nume, ci după numărul de serie "Set Sheet1_WS = Application.ThisWorkbook.Worksheet("Sheet1") Set Sheet1_WS = Application.ThisWorkbook.Sheets(1) Set Sheet2_WS = Application.ThisWorkbook.Sheets(2) "Căutați cele mai recente linie goalăîn prima coloană „Este necesar ca datele să nu fie filtrate, altfel ultimul rând va fi ultimul rând din filtru” De asemenea, în ultimul rând, în prima coloană, nu trebuie să fie o celulă goală. Desigur, dacă există date în această linie. În caz contrar, ultimul rând va fi ultima celulă negoală. FinalRow = Sheet1_WS.Cells(Rows.Count, 1).End(xlUp).Row "=10 000 "Găsește ultima coloană negoală din primul rând FinalColumn = Sheet1_WS.Cells(1, Columns.Count).End( xlToLeft). Coloana „=50 „Atribuiți intervalul de date de pe foaia 1 matricei R_data = Sheet1_WS.Range(Sheet1_WS.Cells(1, 1), Sheet1_WS.Cells(FinalRow, FinalColumn)) Pentru i = 2 To FinalRow „Perform operaţiile de care avem nevoie cu datele „Verificăm să nu existe împărţire la zero. „Se presupune că coloanele 2 și 3 conțin date numerice „În caz contrar, va fi necesară gestionarea erorilor Dacă R_data(i, 3)<>0 Apoi R_data(i, FinalColumn) = R_data(i, 2) / R_data(i, 3) End If Next i "Copiați datele din matrice înapoi în Sheet1 "Înainte de aceasta, ștergeți datele de pe foaie (dacă există formatare sau formule, atunci este mai bine Sheet1_WS.Cells.ClearContents) Sheet1_WS.Cells.Delete Sheet1_WS.Range(Sheet1_WS.Cells(1, 1), Sheet1_WS.Cells(FinalRow, FinalColumn)) = R_data „Copiați datele în Sheet2, copiați primele 10 coloane Sheet2_WS.Range( Sheet2_WS.Cells(1, 1), Sheet2_WS.Cells(FinalRow, 10)) = R_data "Închideți registrul de lucru și salvați-l Workbooks(Application.ThisWorkbook.Name).Close SaveChanges:=True. End Sub

ÎN în acest exemplu matricea este umplută cu intervalul specificat. Dacă avem un specificat explicit matrice bidimensională, apoi îi puteți copia valoarea în foaie astfel:

Dim R_new() As Variant ............................................ " Specificați în mod explicit dimensiunea matricei ReDim R_new(1 To FinalRow, 1 To 50) As Variant ............................. ...... .......... Sheet1_WS.Range(Sheet1_WS.Cells(1, 1), Sheet1_WS.Cells(FinalRow, 50)) = R_new()

Concluzie

Majoritatea operațiunilor asupra datelor pot fi efectuate într-o matrice și numai rezultatul poate fi afișat pe foaie. Uneori este logic să afișați rezultatul pe o foaie, apoi să efectuați unele acțiuni (de exemplu, sortarea) și să încărcați din nou datele în matrice.

A fost o mare surpriză pentru mine că macro-ul putea fi accelerat folosind matrice, deoarece datele de pe foi sunt, de fapt, o matrice bidimensională. Dar se dovedește că accesarea memoriei are loc mult mai rapid decât accesarea celulelor de pe o foaie.

Pe viitor am de gând să scriu sfaturi (exemple) despre cautare rapida date pe foaie, dar asta va fi o altă postare. Dacă aveți întrebări sau comentarii, vă rugăm să scrieți.

Vă mulțumim pentru atenție. Dezvoltare fericită.

În secțiunea despre întrebarea Cum să accelerezi procesul de deschidere Fișiere Word si Excel? Citește toată întrebarea. dat de autor Rustic Cel mai bun răspuns este Mai multă RAM, un procesor mai puternic și mai puține fișiere care rulează în RAM, adăugați Word la excepțiile din antivirus, astfel încât să nu îl verificați din nou.

Răspuns de la Arsen Sandoyants[guru]
1. Încercați să eliminați toată frumusețea sistemului de operare
2. Setați Word și Excel să ruleze în Windows Scheduler
4. Personalizați programele în sine: eliminați barele de instrumente inutile, dezactivați elementele grafice inutile
5. Încercați să divizați fișierele în părți componente (ca pe capitole)
Iată cum au funcționat aceste programe pentru mine: calculator cu putere redusă. Acum am un procesor i5, 4 GB memorie cu acces aleatorși niciun program nu se blochează


Răspuns de la ușor sărat[guru]
Mergeți aici: C:Program FilesMicrosoft OfficeOffice12
iar după fişele celeilalte cărţi. mouse „EXCEL.EXE” și „WINWORD.EXE” - Trimitere ---> Spațiu de lucru (creează o comandă rapidă).
Pe desktop Comandă rapidă EXCEL(eliminăm extensia) - RMB - Proprietăți - iar în câmpul „Obiect” de la sfârșitul căii scriem așa: „/prefetch:1”.
Și calea către fișier va fi astfel:
„C:Program FilesMicrosoft OfficeOffice12EXCEL.EXE” /prefetch:1
(vă rugăm să rețineți că între
„EXCEL.EXE” urmat de slash 1 spațiu /prefetch)
---
Și facem același lucru pentru Word.
(se pare că nu există alte modalități de a optimiza viteza de extindere a fișierelor, dar poate că există :)
========


ÎN Microsoft Excel poți lucra mai ușor și mai rapid. Sunt multe în program funcții puțin cunoscuteși comenzi care vor facilita foarte mult munca chiar și a unui utilizator încrezător. Calculele complexe și de rutină în Excel pot fi efectuate prin specificarea comenzilor cu un singur clic în loc de cinci.

Umplere instantanee

Excel 2013 are cu siguranță această caracteristică. De exemplu, într-o listă cu nume complete, trebuie să vă scurtați numele și prenumele. De exemplu: din Alekseev Alexey Alekseevici V Alekseev A. A. Pentru a face acest lucru, trebuie să introduceți manual 2-3 rânduri de astfel de abrevieri în coloana alăturată, iar apoi programul vă va oferi să repetați automat acțiunile cu datele rămase - trebuie doar să apăsați enter.

Conversia rândurilor în coloane și invers

Puteți economisi timp conversia celulelor dintr-un rând într-o coloană în 3 pași în loc de o rescriere de rutină lungă:

  1. Selectați zona
  2. Copiați datele
  3. Click dreapta faceți clic cu mouse-ul pe celula în care ar trebui să se mute datele, selectați pictograma din fereastra care apare "Transpune"

Pe vechi versiuni Excel Nu există o astfel de pictogramă, dar această comandă este executată prin apăsarea unei combinații de taste ctrl + alt + Vși selectarea funcției "transpune". Și cu mișcări atât de simple ale mouse-ului în mână, coloanele și rândurile își schimbă locul.

Formatarea condițională

Ceva ca un grafic, doar indicatorii nu sunt în celula următoare, ci direct pe fundalul datelor. Această funcție este activată pentru a evidenția unele date din tabel.

De exemplu, un profesor de la școală face un tabel cu performanța medie a fiecărui elev. Formatarea condiționată va crea apoi un „grafic” chiar în interiorul celulelor de notă, evidențiind scorurile medii ale fiecărui elev, de exemplu, de la scăzut la mare. Sau va evidenția celulele în care scorul mediu, de exemplu, este mai mic sau mai mare decât 6. Parametrii pot fi diferiți.

Pentru ca funcția să funcționeze, trebuie să deschideți fila "Acasă", selectați câmpul cu celule din grupul de instrumente "Stiluri" găsește pictograma "Formatarea condițională"și alegeți opțiunea potrivită - ar putea fi o histogramă, o scară de culori sau un set de pictograme. Cu aceeași comandă, puteți seta independent regulile de selectare a celulelor.

Sparkline

  1. Faceți clic pe „Inserați”
  2. Deschideți Sparklines
  3. Selectați comanda „Graph” sau „Histogramă”.
  4. În fereastra care se deschide, specificați un interval cu numere și celule în care ar trebui să apară sclipici bazate pe aceste numere

Macro-uri

Și această caracteristică este concepută pentru a face viața și sarcinile dificile de muncă mai ușoare pentru utilizatori. Înregistrează secvența acțiunilor efectuate și apoi le realizează automat, fără participarea nimănui.

Trebuie să activați macrocomandă deschizând fila "Dezvoltator"și găsirea pictogramei pe bara de instrumente "Macro", iar lângă el - o pictogramă similară cu un cerc roșu în colțul din stânga sus. Dacă trebuie să efectuați aceeași acțiune de mai multe ori, macro-ul va începe înregistrarea, iar computerul va face singur restul.

Prognoze

Această opțiune nu este promovată de dezvoltatori dintr-un motiv - poate prezice viitorul! De fapt, funcția poate prezice și calcula valori viitoare pe baza datelor deja cunoscute care au fost deja înregistrate. Este ușor de accesat:

  1. Specifica cel putin 2 celule cu datele sursă
  2. Deschis "Date""Prognoza"„Foaie de prognoză”
  3. La fereastră „Crearea unei foi de prognoză” faceți clic pe grafic sau histogramă
  4. În zonă „Finalizarea prognozei” setați data de încheiere, apăsați "Crea"

Completați celulele goale din listă

Acest lucru vă va scuti de la introducerea monotonă a frazelor identice în multe celule. Desigur, puteți folosi vechiul copy-paste (copy ctrl+c, paste ctrl+v), dar dacă trebuie să completați nu 10 celule, ci, de exemplu, o sută sau două, iar textul va fi diferit în unele locuri, următorul indiciu va fi cu siguranță util.

Să presupunem că aveți o listă imensă de lucruri de făcut pentru întreaga săptămână și trebuie să setați o anumită zi a săptămânii lângă fiecare sarcină. Nu este nevoie să prescrieți 20 de luni, marți și vineri. Fiecare zi a săptămânii este plasată în coloana unde ar trebui să înceapă lista de sarcini pentru ziua respectivă. Ar trebui să arate cam așa:


În continuare, coloana cu zilele noastre din săptămână este evidențiată în filă "Acasă" butoanele sunt apăsate „Găsiți și selectați”, „Selectați un grup de celule”, „Celule goale”. Apoi, în prima celulă goală trebuie să puneți un semn «=» , săgeată "sus" pe tastatură reveniți la celula umplută (în exemplul din tabel - „Luni”). Clic ctrl+enter. Gata, acum toate celulele goale ar trebui să fie umplute cu date duplicat.

Găsiți erori în formulă

Se întâmplă că formula nu funcționează, dar motivul „defecțiunii” este neclar. Uneori, să-mi dau seama formula complexa(unde alte funcții sunt luate ca argument pentru o funcție) sau pentru a găsi o eroare în ea, trebuie să calculați doar o parte a acesteia. Iată două sfaturi:

O parte a formulei este calculată direct în bara de formule. Pentru a face acest lucru, selectați zona dorită și apăsați F9. Totul este simplu, dar există un „dar”. Dacă uitați să puneți totul la loc, adică anulați calculul funcției și apăsați enter, partea calculată va rămâne ca număr.

Click pe „Calculează formula”în filă "Formulele". Se va deschide o fereastră în care puteți calcula formula pas cu pas și astfel găsiți momentul în care apare eroarea, dacă, desigur, există una.

Masa inteligenta

Dacă utilizatorul și MS Excel diverseînțelegând conceptul de masă, acest lucru îl poate priva de multe funcții convenabileși extinde timpul de lucru. Programul va considera un chenar desenat cu un creion sau folosind un chenar ca fiind un set obișnuit de celule. Pentru ca datele să fie percepute ca un tabel, acest câmp trebuie formatat.

Este necesar să se evidențieze zona dorita, în fila "Acasă" apasa butonul „Format ca tabel”. Găsiți pe cel care vi se potrivește din lista cu diferite forme și culori ale opțiunilor de design.

Copierea păstrând formatele

Cu siguranță toată lumea este familiarizată cu marcatorul de completare automată. Este o cruce neagră mică în colțul din dreapta al unei celule, care vă permite să copiați conținut sau o formulă dintr-o celulă în alte câteva, trăgând-o în jos sau în lateral. Deci, în acest caz, copierea poate încălca „ aspect» tabele, deoarece se copiază și formatul celulei. Dacă trageți de cruce și apăsați etichetă inteligentă(pictograma va apărea în colțul din dreapta jos al intervalului copiat), formatul nu va fi copiat. O altă opțiune este opțiunea „Copiați doar valorile”, în acest caz nici designul mesei nu va fi deteriorat.


Eliminați celulele goale

Ocupați-vă rapid de toate cele inutile celule goale foarte simplu:

  1. Selectați coloana
  2. fila Date
  3. Faceți clic pe „filtru”

O săgeată va apărea deasupra coloanelor, pe care trebuie să faceți clic, apoi în meniul care se deschide, sub numerele 1-9, bifați caseta de lângă element „Celule goale”.

Găsiți diferențe și asemănări între două zone

Dacă trebuie să găsiți rapid aceleași date sau date diferite în 2 liste, Excel va face singur această activitate. Câteva clicuri și programul va evidenția elemente similare sau diferite:

Este necesar să selectați listele (în timp ce țineți apăsat ctrl). În fila "Acasă" mergi la butonul "Formatarea condițională". Faceți clic pe următorul „Reguli pentru evidențierea celulelor”„Valori duplicate” sau "Unic". Gata.

Selectarea rapidă a valorilor

Se știe care ar trebui să fie valoarea de ieșire, dar există incertitudine cu privire la numerele inițiale. Desigur, puteți petrece mult timp selectând datele și recalculând manual rezultatul, dar puteți economisi efort și timp utilizând funcția de selectare a parametrilor.

  1. Deschis "Date"„Lucrul cu datele”„Dacă analiza”„Selectarea parametrilor”
  2. Spre regiune „Setat în celulă” inserați referința de celulă din formula cerută
  3. În zonă "Sens" scrie rezultatul dorit formule
  4. În zonă „Schimbarea valorii unei celule” introduceți un link către celulă cu valoarea ajustată și faceți clic Bine

Călătorie rapidă

În Excel, puteți muta instantaneu orice date: celule, rânduri, coloane. Secvența comenzilor este următoarea: selectați zona sau celula dorită, mutați cursorul peste linia de margine a câmpului selectat, astfel încât indicatorul să se schimbe, apoi pur și simplu trageți aceste date acolo unde aveți nevoie.

Adăugați rapid valori noi la grafic

Date noi sunt deja diagrama terminata poate fi plasat simplu folosind obișnuit copy-paste: select valorile cerute, copiați-le ( ctrl+c) și introduceți în diagramă ( ctrl+v).

Cautare Avansata

Combinaţie ctrl+f, după cum știe toată lumea, duce la un meniu de căutare care va găsi orice informație în acest program. Funcția are mai multe secrete - semne «?» Și «*» vor fi incluse în căutarea unui detectiv adevărat: cu ajutorul lor puteți găsi date dacă nu sunteți sigur de exactitatea cererii. Un semn de întrebare va înlocui un simbol necunoscut, iar un asterisc (acest semn este numit în mod popular asterisc) va înlocui mai multe necunoscute simultan.

Când trebuie să găsiți exact aceste semne într-o grămadă de date, acestea pun o pictogramă în fața lor «~» . Apoi programul nu le va confunda cu personaje necunoscute.

Recuperarea unui fișier nesalvat

În cazul sfârșitului lumii.

Pentru mulți utilizatori, această situație va fi cel mai probabil familiară: au fost atât de fericiți de sfârșitul zilei de lucru, încât atunci când MS Excel a pus întrebarea grijulie „salvează ultimele modificari» a făcut clic pe „nu”. Și munca tuturor ultimele ore a intrat în uitare. Mântuirea este posibilă, există speranță.

MS Excel 2010. Secvența de comenzi este următoarea: "Fişier" - "Ultimul"- (buton dreapta jos).

MS Excel 2013. "Fişier" - "Inteligenta" - "Controlul versiunii" - „Recuperați cărțile nesalvate”. Și programul se va deschide lume secretă toate copiile temporare ale cărților care au fost create sau modificate, dar care nu au fost salvate.

Combinații de taste rapide

Excel însuși vă va oferi un indiciu bun dacă apăsați tasta Alt. Literele vor apărea deasupra diferitelor butoane din bara de instrumente. Când faceți clic pe ele, vor fi lansate anumite funcții, acest lucru vă va ajuta și să vă amintiți câteva taste rapide. Cele mai multe pot fi găsite și la Pagina Oficială programe.

Este imposibil să vă amintiți un astfel de număr de funcții și combinații simultan, dar acestea vor fi stocate în memorie dacă utilizați periodic unele dintre ele atunci când lucrați cu date. Acest lucru va face toată munca mult mai rapidă și mai ușoară.

Formatare condiționată (5)
Liste și intervale (5)
Macrocomenzi (proceduri VBA) (63)
Diverse (39)
Erori și erori Excel (3)

Cum să accelerezi și să optimizezi codul VBA


Mai devreme sau mai târziu, cei care scriu în Visual Basic for Applications au o problemă - deși codul face viața mai ușoară și face totul automat, durează foarte mult. În acest articol am decis să adun mai multe recomandari simple, care va ajuta la accelerarea funcționării codului VBA, în unele cazuri destul de impresionant - de zeci sau chiar de mai multe ori. Accentul principal în articol este pe începători, deci la începutul articolului cel mai mult metode simple optimizare. Mai multe soluții „deep” de optimizare a codului sunt date la sfârșitul articolului, deoarece Pentru a aplica aceste soluții, aveți nevoie de suficientă experiență în VB și este posibil ca astfel de metode de optimizare să nu fie imediat clare pentru cineva.

  1. Dacă există o mulțime de Activare și Selectare în codul dvs., în special în bucle, ar trebui să scăpați de ele imediat. Am scris cum se face acest lucru în articolul: Selectați și activați - de ce sunt necesare și sunt necesare?
  2. Asigurați-vă că dezactivați în timp ce codul rulează:
    • recalcularea automată a formulelor. Pentru a preveni recalcularea formulelor pentru fiecare manipulare de pe foaie în timpul execuției codului, acest lucru poate încetini în mod sălbatic codul dacă există o mulțime de formule:

      Application.ScreenUpdating = Fals

    • Pentru orice eventualitate, dezactivăm urmărirea evenimentelor. Este necesar ca Excel să nu efectueze nicio procedură de eveniment care ar putea fi în foaia în care se fac modificări. De regulă, acestea sunt evenimente de schimbare a celulelor, activare a foilor etc.:

      ActiveWorkbook.ActiveSheet.DisplayPageBreaks = Fals

      daca tiparirea se face in interiorul codului, atunci este indicat sa se introduca aceasta linie imediat dupa linia care imprima foaia (cu conditia ca imprimarea sa nu se produca intr-un ciclu. In acest caz, la sfarsitul ciclului de imprimare).

    • Pentru orice eventualitate, puteți dezactiva afișarea informațiilor în linia de stare Excel (în ce cazuri sunt afișate informații acolo și de ce puteți afla în articolul: Afișați procesul de execuție). Deși acest lucru nu consumă mult resurse, uneori poate încă accelera codul:
      Application.StatusBar = False

      Application.StatusBar = False

    Principalul lucru de reținut este toate aceste proprietăți trebuie reactivate după rularea codului. În caz contrar, pot apărea probleme cu lucrul în Excel. De exemplu, dacă uitați să activați recalcularea automată a formulelor - majoritatea formulelor vor fi recalculate exclusiv folosind metoda forțată - Schimb+F9. Și dacă uitați să dezactivați actualizarea ecranului, atunci există șansa de a vă bloca capacitatea de a lucra pe foi și cărți. Deși în mod implicit proprietatea ScreenUpdating ar trebui să revină la True dacă a fost dezactivată în cadrul procedurii, este mai bine să nu sperați în acest lucru și să vă obișnuiți să forțați toate proprietățile să revină la locul lor. În esență, totul se rezumă la câteva rânduri:

    „Return screen update Application.ScreenUpdating = True „Return automat recalcularea formulelor Application.Calculation = xlCalculationAutomatic „Activați urmărirea evenimentelor Application.EnableEvents = True

    Cum arată acest cod în practică? Să presupunem că trebuie să scriem valori într-o buclă de 10.000 de linii:

    Sub TestOptimize() "dezactivați actualizarea ecranului Application.ScreenUpdating = False "Dezactivați recalcularea automată a formulelor Application.Calculation = xlCalculationManual "Dezactivați urmărirea evenimentelor Application.EnableEvents = False "Dezactivați paginarea ActiveWorkbook.ActiveSheet.DisplayPageBreaks = Codul de fișiere pentru celulele false" lr Cât timp pentru lr = 1 To 10000 Cells(lr, 1).Value = lr "de exemplu, numerotați liniile Următorul "Return screen update Application.ScreenUpdating = True "Return automat recalcularea formulelor Application.Calculation = xlCalculationAutomatic "Enable Aplicație de urmărire a evenimentelor EnableEvents = True End Sub

    Nu trebuie să returnați pauzele de pagină tipărite - vă încetinesc munca în orice caz.

  3. Ar trebui evitate bucle precum Do While pentru a găsi ultima celulă. Începătorii fac adesea această greșeală. Este mult mai eficient și mai rapid să calculați ultima celulă din întreaga foaie sau dintr-o anumită coloană fără această buclă Do While lentă. folosesc de obicei
    lLastRow = Cells(Rows.Count,1).End (xlUp).Row

    lLastRow = Cells(Rows.Count,1).End(xlUp).Row

    Am descris alte opțiuni pentru determinarea ultimei celule în detaliu în articol:

Pentru mai mult utilizatori experimentați VBA Voi oferi mai multe soluții pentru optimizarea codurilor în diferite situații:

  • Cel mai buna optimizare cod, dacă trebuie să lucrați direct cu celulele foii, să le procesați și, eventual, să schimbați valori, atunci este mai rapid să faceți toată procesarea într-o matrice și să o descărcați pe foaie deodată. De exemplu, codul de mai sus pentru completarea celulelor cu numere va arăta în acest caz astfel:
    Sub TestOptimize_Array() „Codul pentru completarea directă a celulelor Dim arr, lr As Long „stochăm într-o matrice dintr-o lovitură toate valorile a 10.000 de rânduri ale primei coloane arr = Cells(1, 1).Resize(10000).Value „dacă aveți nevoie de umplutură pentru două sau mai multe coloane "arr = Cells(1, 1).Resize(10000, 2).Value"sau „arr = Interval(Celele(1, 1),Cellule(10000, 2)).Valoare „sau calculați automat ultima celulă și introduceți datele în matrice, pornind de la celula A3 "llastr = Cells(Rows.Count, 1).End(xlUp).Row "ultima celulă a coloanei A "arr = Interval(Cells(3, 1),Cells(llastr, 2)).Valoare Pentru lr = 1 Până la 10000 arr(lr,1) = lr „Umpleți matricea cu numere de serie Următorul „Descărcăm matricea procesată înapoi pe foaie în aceleași celule Cells(1, 1).Resize(10000).Value = arr End Sub

    Sub TestOptimize_Array() „Direct codul pentru umplerea celulelor Dim arr, lr As Long” stocăm într-o matrice dintr-o singură lovitură toate valorile a 10.000 de rânduri ale primei coloane arr = Cells(1, 1). (10000).Valoare „dacă este necesară completarea pentru două sau mai multe coloane"arr = Cells(1, 1).Resize(10000, 2).Value "sau"arr = Range(Cells(1, 1),Cells(10000, 2)).Value "sau calculați automat ultima celulă și introduceți datele în matrice, pornind de la celula A3"llastr = Cells(Rows.Count, 1).End(xlUp).Row "последняя ячейка столбца А "arr = Range(Cells(3, 1),Cells(llastr, 2)).Value For lr = 1 To 10000 arr(lr,1) = lr "заполняем массив порядковыми номерами Next "Выгружаем обработанный массив обратно на лист в те же ячейки Cells(1, 1).Resize(10000).Value = arr End Sub!}

    Dar aici ar trebui să se țină cont și de faptul că suprafețe mari poate cauza pur și simplu depășirea memoriei. Acest lucru este cel mai relevant pentru sistemele pe 32 de biți, unde este alocată mai puțină memorie pentru VBA și Excel decât în ​​sistemele pe 64 de biți

  • Dacă utilizați rapid IF - IIF , atunci înlocuiți-l cu IF ... Then ... Else
  • De asemenea, este mai bine să folosiți același IF ... Then ... Else în loc de Switch() și Shoose()
  • În cele mai multe cazuri, verificarea unui șir pentru „nu este gol” este mai bine folosind Len() decât compararea directă cu gol: Len(s)=0 în loc de s = „” . Acest lucru se datorează faptului că lucrul cu șiruri este mult mai lent decât lucrul cu date numerice
  • Nu utilizați concatenarea șirurilor decât dacă este necesar. De exemplu, s = "AB" va fi mai rapid decât: s = "A" și "B"
  • Nu comparați direct valorile textului. Este mai bine să utilizați funcția StrComp încorporată:
    Dacă s s1, atunci va fi mai lent decât
    Dacă StrComp(s, s1, vbBinaryCompare) = 0
    și cu atât mai mult dacă comparația trebuie să ignore majuscule și minuscule:
    Dacă LCaza(e) LCaza(s1) Atunci va fi mai lent decât
    Dacă StrComp(s, s1, vbTextCompare) = 0
  • Buclele For...Next sunt mai rapide în majoritatea cazurilor decât buclele Do...Looop
  • Evitați însuşirea variabile de tip Variantă. Deși tentația este mare, acest tip ocupă multă memorie și, ulterior, încetinește codul. De asemenea, pentru variabilele obiect, ar trebui să evitați, dacă este posibil, fără chip tip global Obiectați și aplicați un tip de beton:

    Dim rRange ca Interval, wsSh ca Foaia de lucru

  • Dacă lucrați cu matrice, puteți specifica acest lucru în mod explicit atunci când declarați:

    Dim arr() ca șir, arr2() ca lung

    dar asta numai dacă există încredere că tipurile de date strict specificate vor fi introduse în matrice

Desigur, acestea nu sunt toate tehnici și soluții de optimizare. Dar pentru primul cuplu ar trebui să fie suficient. În plus, ar trebui să folosiți întotdeauna bunul simț. De exemplu, dacă codul se execută în 2 secunde, atunci probabil că nu are rost să-l optimizăm în continuare. Desigur, dacă acest cod nu este unul dintre cele care pur și simplu schimbă valoarea uneia sau a două celule.

A ajutat articolul? Distribuie link-ul prietenilor tăi! Lecții video

("Bara de jos":("textstyle":"static","textpositionstatic":"bottom","textautohide":true,"textpositionmarginstatic":0,"textpositiondynamic":"bottomleft","textpositionmarginleft":24," textpositionmarginright":24,"textpositionmargintop":24,"textpositionmarginbottom":24,"texteffect":"slide","texteffecteasing":"easeOutCubic","texteffectduration":600,"texteffectslidedirection":"left","texteffectslidedistance" :30,"texteffectdelay":500,"texteffectseparate":false,"texteffect1":"slide","texteffectslidedirection1":"dreapta","texteffectslidedistance1":120,"texteffecteasing1":"easeOutCubic","texteffectduration1":600 ,"texteffectdelay1":1000,"texteffect2":"slide","texteffectslidedirection2":"dreapta","texteffectslidedistance2":120,"texteffecteasing2":"easeOutCubic","texteffectduration2":600,"texteffectdelay2,":1500,":1500, textcss":"display:block;text-align:left;","textbgcss":"display:absolute:#333333; ","titlecss":"display:block; poziție:relativă; font:bold 14px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; culoare:#fff;","descriptioncss":"display:block; poziție:relativă; font:12px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; culoare:#fff; margin-top:8px;","buttoncss":"display:block; poziție:relativă; margin-top:8px;","texteffectresponsive":true,"texteffectresponsivesize":640,"titlecssresponsive":"font-size:12px;","descriptioncssresponsive":"display:none !important;","buttoncssresponsive": "","addgooglefonts":false,"googlefonts":"","textleftrightpercentforstatic":40))

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă ne-am grăbi pe undeva