Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel non calcola formula esatta

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

Excel non calcola formula esatta

Postdi tecay » 18/05/09 10:23

Buongiorno a tutti,

sto buttando il sangue su un problema con excel 2003. In pratica creo un nuovo foglio da vb e nella colonna O voglio che venga calcolato il numero di giorni lavorativi fra due date contenute in C e D, con delle condizioni se il valore è <=> 0. La formula scritta in vb è la seguente:
NashXl.Range(Cella).FormulaR1C1 = "IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"

Succede che ritrovo scritta per bene la formula nella colonna O, ma anziche trovarmi il risultato mi trovo l'errore #NOME?.
Ok, avrai sbagliato la sintassi direte, invece se taglio la formula e la copio nel notepad e poi la ricopio di nuovo nella colonna excel ritrovo il risultato della formula.

Qualcuno ha idea su come risolvere questo strano problema? Premetto che ho caricato il componente aggiuntivo Analisi dati in excel.
Grazie
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Sponsor
 

Re: Excel non calcola formula esatta

Postdi pietrol » 18/05/09 11:18

Ciao tecay
la formula è corretta, ma prima di "IF" devi aggiungere un "=" perchè funzioni.
Codice: Seleziona tutto
NashXl.Range(Cella).FormulaR1C1 = "=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"


ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: Excel non calcola formula esatta

Postdi tecay » 18/05/09 11:22

pietrol ha scritto:Ciao tecay
la formula è corretta, ma prima di "IF" devi aggiungere un "=" perchè funzioni.
Codice: Seleziona tutto
NashXl.Range(Cella).FormulaR1C1 = "=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"


ciao
pietrol


Scusa dove? Vedi c'è un uguale dopo FormulaR1C1 e poi un altro prima dell'IF
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi pietrol » 18/05/09 11:29

Questo è quello che hai scritto, il segno di "=" non c'è, o almeno non lo hai scritto.
NashXl.Range(Cella).FormulaR1C1 = "IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.
io mi riferisco al segno "dopo" le virgolette, che sembrerebbe mancante sulla tua formula.

ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: Excel non calcola formula esatta

Postdi tecay » 18/05/09 12:03

pietrol ha scritto:Questo è quello che hai scritto, il segno di "=" non c'è, o almeno non lo hai scritto.
NashXl.Range(Cella).FormulaR1C1 = "IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.
io mi riferisco al segno "dopo" le virgolette, che sembrerebbe mancante sulla tua formula.

ciao
pietrol


no, c'è purtroppo ..., malo stesso non va! :cry:
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi Anthony47 » 18/05/09 13:49

Ciao tecay e benvenuto nel forum.
Prova con NashXl.Range(Cella).FormulaR1C1Local etc etc (e non FormulaR1C1)

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel non calcola formula esatta

Postdi tecay » 18/05/09 15:57

Anthony47 ha scritto:Ciao tecay e benvenuto nel forum.
Prova con NashXl.Range(Cella).FormulaR1C1Local etc etc (e non FormulaR1C1)

Ciao.


Ho provato ma non scrive nulla nelle celle.
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi Anthony47 » 18/05/09 16:18

"nelle celle"?
Quali sono le istruzioni che usi?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel non calcola formula esatta

Postdi tecay » 18/05/09 17:39

[quote="Anthony47"]"nelle celle"?
Quali sono le istruzioni che usi?

all'interno di un ciclo ho usato
Cella = "O" & CStr(K + 1) ' dove k è il n° di riga
NashXl.Range(Cella).FormulaR1C1Local = "=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])-1,GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi Anthony47 » 18/05/09 20:15

Guardando bene i vari post, non so se tu hai una versione Inglese o Italiano; certo mettere insieme IF e GIORNI.LAVORATIVI.TOT non e' un ibrido vincente.
La sintassi giusta per la formula la puoi ottenere tramite Registra nuova macro; poi credo che non avrai difficolta' a modificare il codice per inserirlo nel tuo ciclo.

Comunque fai sapere; ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel non calcola formula esatta

Postdi tecay » 19/05/09 08:20

Anthony47 ha scritto:Guardando bene i vari post, non so se tu hai una versione Inglese o Italiano; certo mettere insieme IF e GIORNI.LAVORATIVI.TOT non e' un ibrido vincente.
La sintassi giusta per la formula la puoi ottenere tramite Registra nuova macro; poi credo che non avrai difficolta' a modificare il codice per inserirlo nel tuo ciclo.

Comunque fai sapere; ciao.


Ho dovuto mettere la if perchè la formula in questione per le date 18/05/09 e 19/05/09 mi da 2, mentre per me deve essere 1. Excel è in italiano e la formula che ho ottenuto proviene da una macro, solo che li si fa riferimento ad active cell per il puntamento alla cella. Ripeto , la cosa stranissima è che se vado in edit della cella contenente la formula, la taglio, la incollao in notepad , poi la incollo di nuovo nella cella, ho il risultato, quindi vi è qualcosa per cui la formula scritta da codice vba non viene interpretata da Excel, ma formalmente è corretta.
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi Flash30005 » 19/05/09 09:36

Non ho ben capito se le date si trovano sullo stesso foglio (GIORNI.LAVOTATIVI.TOT) oppure su altro foglio comunque se si trovano sullo stesso foglio puoi adottare questo semplice codice
Codice: Seleziona tutto
Sub Contagiorni()
Righe = Worksheets("GIORNI.LAVORATIVI.TOT").Range("C" & Rows.Count).End(xlUp).Row
For I = 1 To Righe
    Range("O" & I).Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-12]<>0,RC[-11]-RC[-12],"""")"
Next
End Sub

Righe conta le righe nella colonna C
poi vengono selezionate le celle della colonna O (da 1 a N Righe) e inserisce la formula di sottrazione date (D - C) se in C non c'è nulla lascerà la cella vuota
Vedi se va bene
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel non calcola formula esatta

Postdi Anthony47 » 19/05/09 10:20

OLTRE alle informazioni scritte da Flash aggiungo queste mie considerazioni.

Sei il primo che posta in questo forum ad usare il codename per far riferimento in vba a un foglio, avendone anche modificato il "(Name)" di default, quindi ho assunto che fossi un utente esperto e mi sono limitato a qualche spunto. Ma la situazione piu' che altro si e' confusa vieppiu', quindi proviamo a fare qualche ragionamento step by step.

Innanzitutto premetto che era errato il mio ragionamento che GIORNI.LAVORATIVI.TOT richiedesse la proprieta' FormulaR1C1Local: pur essendo una formula in lingua "locale" essa e' gestita da un addin che evidentemente le assegna lo stesso nome in lingua locale e in inglese.

Poi, quale versione di excel usi?

Nell' editor del vba, finestra Progetti-VBAProject, quali "Progetti" vedi elencati, oltre al tuo file?

Durante l' esecuzione del codice, in particolare quello che ti ho suggerito io (errato per quanto detto in premessa), viene emesso qualche messaggio di errore? Hai nella tua macro qualche gestore di errore, tipo "On Error fai questo"? Se Si, di che tipo?

Se hai un On Error Resume Next, rimuovilo a meno che non sia limitato a qualche istruzione che sai potrebbe dare un errore; ma in questo caso e' necessario che dopo l' istruzione potenzialmente in errore l' handler dell' errore sia azzerato (On error Goto 0).
Quando dici " se taglio la formula e la copio nel notepad e poi la ricopio di nuovo nella colonna excel ritrovo il risultato della formula" e' giusto che copi la formula dalla barra della formula di excel?

Ciao, ti aspettiamo.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel non calcola formula esatta

Postdi tecay » 19/05/09 12:16

...

Poi, quale versione di excel usi? Excel 2003

Nell' editor del vba, finestra Progetti-VBAProject, quali "Progetti" vedi elencati, oltre al tuo file?

Il foglio excel è creato runtime da Visual Basic 6 tramite codice


Durante l' esecuzione del codice, in particolare quello che ti ho suggerito io (errato per quanto detto in premessa), viene emesso qualche messaggio di errore?
Si: "La Formula contiene testo non riconosciuto"


Hai nella tua macro qualche gestore di errore, tipo "On Error fai questo"? Se Si, di che tipo? No

Se hai un On Error Resume Next, rimuovilo a meno che non sia limitato a qualche istruzione che sai potrebbe dare un errore; ma in questo caso e' necessario che dopo l' istruzione potenzialmente in errore l' handler dell' errore sia azzerato (On error Goto 0).
Quando dici " se taglio la formula e la copio nel notepad e poi la ricopio di nuovo nella colonna excel ritrovo il risultato della formula" e' giusto che copi la formula dalla barra della formula di excel?

Vado con F2 sulla cella , seleziono il testo e lo taglio

Ciao, ti aspettiamo.[/quote]
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi ricky53 » 19/05/09 17:17

ciao tecay,
arrivo tardi nella discussione ma vorrei, comunque, dare il mio contributo.

Per cercare di trovare un soluzione ti chiedo su puoi scrivere la formula come se la stessi scrivendo tu nella cella, poi pnesiamo a trasformala in formula con il VBA.

Innanzi tutto:
1. con giorni.lavorativi.tot ti riferivi alla funzione di excel che calcola i giorni lavorativi?
2. in quali celle agisci per il calcalo.

Per il momento basta, poi, in base alle tue risposte, si va avanti.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel non calcola formula esatta

Postdi ricky53 » 19/05/09 17:47

Ciao,
non contento ho fatto delle prove:

1. in "AA1" ho scritto la tua formula (con excel versione 2003 italiana) sostituendo le "," con i ";" e "IF" con "SE"
ovviamente, prima, avevo inpostato lo
"Stile di riferimento R1C1" (da strumenti, opzioni, generale, check su "Stile di ....")
=SE(GIORNI.LAVORATIVI.TOT(RC[-12];RC[-11])>=0; GIORNI.LAVORATIVI.TOT(RC[-12]; RC[-11])-1; GIORNI.LAVORATIVI.TOT(RC[-12];RC[-11])+1)

2. ho rimesso lo stile nel modo tradizionale (tolto il check) ed ho ottenuto:
=SE(GIORNI.LAVORATIVI.TOT(O1;P1)>=0; GIORNI.LAVORATIVI.TOT(O1; P1)-1; GIORNI.LAVORATIVI.TOT(O1;P1)+1)

3. con il registratore di macro ho simulato una modifica alla cella "AA1" ed ho ottenuto
ActiveCell.FormulaR1C1 = _
"=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0, GIORNI.LAVORATIVI.TOT(RC[-12], RC[-11])-1, GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"


Ho fatto delle prove e in:
O1 ho scritto 01-01-2009
ed in
P1 ho scritto 31-01-2009

ottenendo in AA1 ---->> 21 (la formula ha tolto un giorno essendosi verifcata la condizione di ">=0")

Confermi che era questo che volevi avere dalla formula?

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel non calcola formula esatta

Postdi Anthony47 » 19/05/09 22:06

Ciao Ricky, non sei in ritardo perche' il problema e' ancora open.

Io pero' ripropongo una domanda a cui tecay non ha risposto:
-nel frame Progetto - VBAProject dell' editor delle macro, quanti "progetti" vedi elencati?
Questo mira a capire se gli addin per la gestione di alcune funzioni sono installati o meno.

Partendo da excel, vai all' editor delle macro con Alt-F11; il frame di cui parlo in genere e' situato a sx; se non trovi l' intestazione Progetto - VBAProject allora fai Menu /Visualizza /Gestione progetti; poi elenchi che cosa trovi in quel riquadro.

La formula non sembra ("non sembra") essere un problema perche' se scritta a mano nella cella da' il risultato atteso.
Comunque ogni contributo credo che sia d' aiuto all' utente.

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel non calcola formula esatta

Postdi tecay » 20/05/09 14:58

ricky53 ha scritto:Ciao,
non contento ho fatto delle prove:

1. in "AA1" ho scritto la tua formula (con excel versione 2003 italiana) sostituendo le "," con i ";" e "IF" con "SE"
ovviamente, prima, avevo inpostato lo
"Stile di riferimento R1C1" (da strumenti, opzioni, generale, check su "Stile di ....")
=SE(GIORNI.LAVORATIVI.TOT(RC[-12];RC[-11])>=0; GIORNI.LAVORATIVI.TOT(RC[-12]; RC[-11])-1; GIORNI.LAVORATIVI.TOT(RC[-12];RC[-11])+1)

2. ho rimesso lo stile nel modo tradizionale (tolto il check) ed ho ottenuto:
=SE(GIORNI.LAVORATIVI.TOT(O1;P1)>=0; GIORNI.LAVORATIVI.TOT(O1; P1)-1; GIORNI.LAVORATIVI.TOT(O1;P1)+1)

3. con il registratore di macro ho simulato una modifica alla cella "AA1" ed ho ottenuto
ActiveCell.FormulaR1C1 = _
"=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0, GIORNI.LAVORATIVI.TOT(RC[-12], RC[-11])-1, GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"


Ho fatto delle prove e in:
O1 ho scritto 01-01-2009
ed in
P1 ho scritto 31-01-2009

ottenendo in AA1 ---->> 21 (la formula ha tolto un giorno essendosi verifcata la condizione di ">=0")

Confermi che era questo che volevi avere dalla formula?

Ciao da Ricky53


Ciao Ricky53,
come avrai letto, la formula vb la scrive bene, excel che non la interpreta bene rilevando un errore, Ripeto , la formula viene scritta da codice visual basic 6, non VBA all'interno di Excel.
Ciao
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi tecay » 20/05/09 15:03

Anthony47 ha scritto:Ciao Ricky, non sei in ritardo perche' il problema e' ancora open.

Io pero' ripropongo una domanda a cui tecay non ha risposto:
-nel frame Progetto - VBAProject dell' editor delle macro, quanti "progetti" vedi elencati?
Questo mira a capire se gli addin per la gestione di alcune funzioni sono installati o meno.

Partendo da excel, vai all' editor delle macro con Alt-F11; il frame di cui parlo in genere e' situato a sx; se non trovi l' intestazione Progetto - VBAProject allora fai Menu /Visualizza /Gestione progetti; poi elenchi che cosa trovi in quel riquadro.

La formula non sembra ("non sembra") essere un problema perche' se scritta a mano nella cella da' il risultato atteso.
Comunque ogni contributo credo che sia d' aiuto all' utente.

Ciao a tutti.

Ti ho fatto una cattura schermo dei progetti presenti.
Allegati
vba.JPG
(24.94 KiB) Scaricato 19 volte
tecay
Newbie
 
Post: 9
Iscritto il: 18/05/09 10:11

Re: Excel non calcola formula esatta

Postdi ricky53 » 20/05/09 17:31

Ciao,

Ma hai provato come ti ho indicato?

Ripropongo:

Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = _
"=IF(GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])>=0, GIORNI.LAVORATIVI.TOT(RC[-12], RC[-11])-1, GIORNI.LAVORATIVI.TOT(RC[-12],RC[-11])+1)"


da scrivere, ad esempio, in "AA1", e le date sono in "O1" e "P1"

A me funziona benissimo

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Excel non calcola formula esatta":


Chi c’è in linea

Visitano il forum: patel e 11 ospiti