Nu executa o functie imediat

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Închis
Ency
Mesaje: 2
Membru din: Mar Ian 12, 2016 10:44 pm

Nu executa o functie imediat

Mesaj de Ency » Mar Ian 12, 2016 10:58 pm

Buna. Vreau sa adun valorile pentru a,b,c,d
In Modules - Module1 am:

Function Suma(r As Range) As Single
Dim i As Integer
Suma = 0
For i = 1 To 9
If Cells(i, 1).Value = Cells(r.Row, 4).Value Then
Suma = Suma + Cells(i, 2).Value
End If
Next i
End Function

Calculeaza corect, dar nu imediat. Trebuie sa dau dublu click pe E1..E4 si apoi <Enter>
\ A B C D E
1 a 1 * a 10 E1=Module1.Suma(D1)
2 b 2 * b 13 E2=Module1.Suma(D2)
3 a 3 * c 13 E3=Module1.Suma(D3)
4 b 4 * d 9 E4=Module1.Suma(D4)
5 c 5 *
6 a 6 *
7 b 7
8 c 8
9 d 9

Daca modific B3 in 10 in E1 ramine 10. Ca sa obtin 17 trebuie sa dau dublu click pe E1 si apoi <Enter>. Daca uit ... asta e.
Ce gresesc? Exista vreo functie system care sa faca treaba asta? Nu am gasit.
Va multumesc.

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: Nu executa o functie imediat

Mesaj de Indigo » Mie Ian 13, 2016 9:13 am

Nu am testat codul dar ma indoiesc ca functioneaza.
Ce reprezinta r.Row?

Ataseaza un fisier sa vedem despre ce este vorba. Daca codul functioneaza atunci s-ar putea sa ai "calcularea" pe manual.

cip.st
Moderator
Moderator
Mesaje: 550
Membru din: Vin Iun 06, 2014 1:43 pm
Localitate: Iași

Re: Nu executa o functie imediat

Mesaj de cip.st » Mie Ian 13, 2016 9:32 am

Function Suma(r As Range) As Single
@Ency
E destul de alambicat ceea ce ai în cod...

Bănuiesc că îți dorești ca în Ei să ai suma tuturor valorilor din B1:B9 care pentru care valorile din A1:A9 sunt egale cu valoarea din argumentul funcției tale. Pentru aceasta poți utilizat sumif() (nu mai țin minte dacă era în Excel 2003 sau a fost introdusă în 2007).

Încearcă să folosești (dacă este disponibilă funcția) =sumif(A1:A9,criteriu,B1:B9).

Ency
Mesaje: 2
Membru din: Mar Ian 12, 2016 10:44 pm

Re: Nu executa o functie imediat

Mesaj de Ency » Mie Ian 13, 2016 4:28 pm

Da, am simplificat prea mult problema pe care am prezentat-o. Acolo se putea folosi sumif(), dar problema mea ramine. Nu executa imediat functia mea suma().
Mi s-a cerut sa atasez fisierul excel ceea ce si fac.
Va multumesc
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: Nu executa o functie imediat

Mesaj de Indigo » Mie Ian 13, 2016 6:07 pm

Am observat ca intr-adevar nu se actualiza suma (apropo, nu este necesar sa pui in formula, =module1.suma(D2) ci simplu =suma(D2))
Am pus Application.Volatile in cod si datele s-au actualizat in timp real.

Închis

Înapoi la “Intrebari despre Excel 2003”