Condividi:        

[vba] cosa non va in questo codice?

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba] cosa non va in questo codice?

Postdi yield.pm » 01/06/11 18:29

Application.WorksheetFunction.SumProduct(--(RTipo = "AAA"),--(RModo= "AAA")) ?
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Sponsor
 

Re: [vba] cosa non va in questo codice?

Postdi Avatar3 » 01/06/11 19:15

Cosa dovrebbe fare?
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 01/06/11 19:36

sommare quando rtipo=AAA e Rmodo=AAA
Su excel funziona benissimo su vba non riesco da sempre errore...
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 01/06/11 19:49

scusa... contare quante volte contemporanemente i due range hanno il valore AAA
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi Avatar3 » 01/06/11 19:59

Se devi contare quante "AAA" ci sono su una colonna es. Tipo
Conti il numero di righe di quella colonna
Con un codice come questo
Codice: Seleziona tutto
URT = Range("A" & Rows.Count).End(xlUp).Row

Se Tipo è sulla colonna A
Poi fai un For... next
Codice: Seleziona tutto
ContaT = 0
For RR = 1 to URT
If Range("A" & RR).value = "AAA" then ContaT = ContaT + 1
Next RR
Msgbox ContaT

Stessa cosa per Modo
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 01/06/11 20:08

Grazie Avatar3 ma io vogio capire perchè la formula non funziona....
questa la formula in excel:
=MATR.SOMMA.PRODOTTO(--(Tipo="AAA"),--(Modo="AAA")) e funziona benissimo
questo il codice vba
= Application.WorksheetFunction.SumProduct(--(RTipo="AAA"),--(RModo="AAA")) e da sempre errore...
dove RTipo è il range TIpo e RModo è il range Modo

Non riesco a capire... :oops:
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi Anthony47 » 01/06/11 22:23

La WorksheetFunction.SumProduct si aspetta come argomenti degli intervalli, non delle formule; e in ogni caso avresti dovuto scrivere Range("RModo") e non RModo.
Non so quale e' la tua istruzione completa, prova a usare
Codice: Seleziona tutto
Evaluate("=SUMPRODUCT(--(RTipo=""AAA""),--(RModo=""AAA""))")
al posto di quanto hai pubblicato.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 02/06/11 08:56

Anthony47 ha scritto:La WorksheetFunction.SumProduct si aspetta come argomenti degli intervalli, non delle formule; e in ogni caso avresti dovuto scrivere Range("RModo") e non RModo.
Non so quale e' la tua istruzione completa, prova a usare
Codice: Seleziona tutto
Evaluate("=SUMPRODUCT(--(RTipo=""AAA""),--(RModo=""AAA""))")
al posto di quanto hai pubblicato.

Ciao

No Anthony continuo ad avere risultati errati.... tornando alla mia formula iniziale set Rmodo= Range("MODO") quindi la formula sembra essere corretta... qualsiasi funzione inserisco al posto di supproduct infatti funziona benissimo... :oops:
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 02/06/11 10:25

... fatemi un esempio qualsiasi che funzioni utilizzando però questa funzione:
WorksheetFunction.SumProduct

magari mi chiarisco le idee... :)
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi Anthony47 » 02/06/11 15:24

No Anthony continuo ad avere risultati errati.... tornando alla mia formula iniziale set Rmodo= Range("MODO") quindi la formula sembra essere corretta... qualsiasi funzione inserisco al posto di supproduct infatti funziona benissimo...
Ma io ti ho detto che "WorksheetFunction.SumProduct si aspetta come argomenti degli intervalli, non delle formule"; per ulteriore chiarezza dico che se gli metti delle formule non funzionera'.

fatemi un esempio qualsiasi che funzioni utilizzando però questa funzione:
WorksheetFunction.SumProduct
Ad esempio
Codice: Seleziona tutto
pippo=WorksheetFunction.SumProduct(Range("A1:A20"),Range("B1:B20"))

Hai valutato l' ipotesi "Evaluate" (adattando i parametri alla tua situazione)?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 05/06/11 09:51

ok grazie Anthony, comunque ho risolto utilizzando altre funzioni come conta.più.se e somma.più.se.... ho fatto tutto con excel anzichè con vba perchè ho capito che non ne valeva la pena.... ho risolto tutto tranne una cella in cui devo utilizzare la funzione conta.più.se ma non riesco, spiego meglio facendo un esempio.

dunque se nella colonna A ho la scritta pippo e nella colonna b ho la scritta rosa scrivo CONTA.PIÙ.SE(colA,"=pippo",ColB,"=rosa") ed ottengo il risultato voluto, se invece volessi contare quante volte ho la scritta pippo in A e NESSUNA SCRITTA nella colonna B come si scrive la formula? In pratica sostiture nella formula rosa con "", ma non funziona...
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [vba] cosa non va in questo codice?

Postdi Anthony47 » 07/06/11 15:12

Provato su 2010, una formula tipo
Codice: Seleziona tutto
=Conta.più.se(A1:A100;"pippo";B1:B100;"")
fa il calcolo correttamente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] cosa non va in questo codice?

Postdi yield.pm » 07/06/11 15:22

Anthony47 ha scritto:Provato su 2010, una formula tipo
Codice: Seleziona tutto
=Conta.più.se(A1:A100;"pippo";B1:B100;"")
fa il calcolo correttamente.

Ciao

Chiedo scusa... nella seconda condizione non deve essere uguale a "" ma l'esatto contrario ovvero la colonna B deve contenere una scritta qualsiasi, quindi <> "", è questo che non riesco a fare.. Scusami ho scritto stupidaggini... :oops:
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55


Torna a Applicazioni Office Windows


Topic correlati a "[vba] cosa non va in questo codice?":


Chi c’è in linea

Visitano il forum: Nessuno e 92 ospiti