Optimizare formula

Ce este nou in Microsoft Excel 2019?
Informatii despre cum se utilizeaza Microsoft Excel 2019
Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Florin Daniel
Mesaje: 3
Membru din: Dum Iul 30, 2023 6:34 pm

Optimizare formula

Mesaj de Florin Daniel » Dum Iul 30, 2023 6:51 pm

Buna seara! Incerc sa optimizez aceasta formula pentru ca imi ia si 5 minute daca setez "=5".

Cod: Selectaţi tot

=IFERROR(INDEX('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000;SMALL(IF(MMULT(COUNTIF(A2:C2;'D:\proiect\[1.xlsb]tabel'!$D$2:$X$30000);ROW('D:\proiect\[1.xlsb]tabel'!$1:$21)/ROW('D:\proiect\[1.xlsb]tabel'!$1:$21))=3;ROW('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000)-1);ROWS($1:$1));COLUMNS($A:A));"")
Am incercat sa inlocuiesc MMULT cu SUMPRODUCT, insa nu-mi iese, nu-mi intoarce niciun rezultat. O seara placuta!

Indigo-ONE
Mesaje: 437
Membru din: Mar Dec 11, 2018 8:54 pm

Re: Optimizare formula

Mesaj de Indigo-ONE » Mar Aug 01, 2023 9:50 pm

Salut,

Daca vedeti ca nu primiti raspuns, verificati ce ati scris, daca se intelege ce doriti. Explicati si dati cat mai multe detalii.
Pe forum ai cautat? Poate gasesti ce te intereseaza.
Facand abstractie ca stii despre ce e vorba, tu ai intelege ceva din ce ai scris pe forum?
Incerc sa optimizez aceasta formula pentru ca imi ia si 5 minute daca setez "=5".
Unde setezi acel "=5" ???
Am incercat sa inlocuiesc MMULT cu SUMPRODUCT, insa nu-mi iese.....
Cum ai incercat sa inlocuiesti?? schimband doar numele functiei???
Poate atasezi un fisier, ca sa putem intelege ce vrei si poate gasim o solutie....
Formula pe care vrei sa o optimizezi, este o formula matriceala, iar daca ai multe asemenea formule este evidenta lentoarea afisarii datelor....


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

basileus
Mesaje: 122
Membru din: Dum Noi 07, 2010 4:58 pm

Re: Optimizare formula

Mesaj de basileus » Mie Aug 02, 2023 7:54 am

Buna ziua!
O posibilă îmbunătățire ar putea implica următoarele:
Reduceți dimensiunea intervalului de căutare: Dacă știți că datele relevante se află într-un interval mai mic, înlocuiți "A2:X30000" cu intervalul real în care vă așteptați să găsiți rezultatul.
Evitați formulele masive: Formula pare să implice o matrice (MMULT) care poate deveni ineficientă pentru seturi mari de date. Dacă este posibil, încercați să găsiți o altă abordare care să nu necesite utilizarea acestei funcții.
Utilizați nume definite pentru intervalurile utilizate în formula: Dacă aveți anumite intervale pe care le utilizați des în formula, definiți-le ca nume definite (Formule -> Nume definite -> Definează nume) pentru a face formula mai ușor de înțeles și de gestionat.
Verificați să nu existe funcții necunoscute sau nerecunoscute în formula. Acest lucru poate duce la întârzieri în calcul.
Am incercat sa va fiu de folos. Va urez o zi frumoasa!

Florin Daniel
Mesaje: 3
Membru din: Dum Iul 30, 2023 6:34 pm

Re: Optimizare formula

Mesaj de Florin Daniel » Mie Aug 02, 2023 10:41 pm

Salut! Daca reduc acel range nu voi mai putea intoarce rezultatul dorit. Formula actuala cauta intr-un alt fisier in zona A2:X3000 prima potrivire a unor valori prestabilite in zona A2:C2, unde valorile lui A2 si B2 pot fi regasite in zona D:W si valoarea lui C2 se regaseste pe coloana X a fisierului extern (local) si formula imi intoarce valoarea din coloana A a primei pozitii gasite.

structura fisier unde formula face cautarea

Imagine

formula

Cod: Selectaţi tot

{=IFERROR(INDEX('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000;SMALL(IF(MMULT(COUNTIF(A2:C2;'D:\proiect\[1.xlsb]tabel'!$D$2:$X$30000);ROW('D:\proiect\[1.xlsb]tabel'!$1:$21)/ROW('D:\proiect\[1.xlsb]tabel'!$1:$21))=3;ROW('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000)-1);ROWS($1:$1));COLUMNS($A:A));"")}
Multumesc pentru timpul si efortul acordat in a-mi raspunde. O seara placuta!

Florin Daniel
Mesaje: 3
Membru din: Dum Iul 30, 2023 6:34 pm

Re: Optimizare formula

Mesaj de Florin Daniel » Joi Aug 03, 2023 7:46 am

basileus scrie:
Mie Aug 02, 2023 7:54 am
Buna ziua!
O posibilă îmbunătățire ar putea implica următoarele:
Reduceți dimensiunea intervalului de căutare: Dacă știți că datele relevante se află într-un interval mai mic, înlocuiți "A2:X30000" cu intervalul real în care vă așteptați să găsiți rezultatul.
Evitați formulele masive: Formula pare să implice o matrice (MMULT) care poate deveni ineficientă pentru seturi mari de date. Dacă este posibil, încercați să găsiți o altă abordare care să nu necesite utilizarea acestei funcții.
Utilizați nume definite pentru intervalurile utilizate în formula: Dacă aveți anumite intervale pe care le utilizați des în formula, definiți-le ca nume definite (Formule -> Nume definite -> Definează nume) pentru a face formula mai ușor de înțeles și de gestionat.
Verificați să nu existe funcții necunoscute sau nerecunoscute în formula. Acest lucru poate duce la întârzieri în calcul.
Am incercat sa va fiu de folos. Va urez o zi frumoasa!
Buna dimineata! Multumesc pentru raspuns.
Daca reduc acel interval de cautare risc sa nu obtin niciun rezultat, nicio potrivire. Formula cauta prima potrivire A2:C2 intrun alt fisier, unde valorile A2 si B2 se regasesc in zona D:W si valoarea C2 se regaseste in zona X a fisierului de cautare, iar formula imi intoarce valoarea din coloana A a primei potriviri. O zi placuta!

formula

Cod: Selectaţi tot

{=IFERROR(INDEX('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000;SMALL(IF(MMULT(COUNTIF(A2:C2;'D:\proiect\[1.xlsb]tabel'!$D$2:$X$30000);ROW('D:\proiect\[1.xlsb]tabel'!$1:$21)/ROW('D:\proiect\[1.xlsb]tabel'!$1:$21))=3;ROW('D:\proiect\[1.xlsb]tabel'!$A$2:$X$30000)-1);ROWS($1:$1));COLUMNS($A:A));"")}
structura fisierului unde formula face cautarea
Imagine

Scrie răspuns

Înapoi la “Intrebari despre Excel 2019”