Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Doppio controllo di cella e valore

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] Doppio controllo di cella e valore

Postdi mpsinf » 23/11/12 20:53

Il seguente ciclo mi permette di eseguire un controllo se in B2 il valore del tempo è inferiore a circa 40" e la differnza del tempo tra adesso e il valore di D1 è maggiore al minuto e mezzo circa, ma il tutto va in errore se la cella D1 per un particolare momento è vuota

Codice: Seleziona tutto
 If Range("B2").Value < 0.0005 And TimeValue(Now) - TimeValue(Range("D1").Value) > 0.001 Then
  MsgBox "estraggo"
      Call A2_Estrai_valori
  Else
  Exit For ' annulla analisi aste successive se c'è 1 aste in scadenza entro 35 sec. (0.0004)
  End If


senza mettere un altra nidificazione if come posso risolvere ?
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Sponsor
 

Re: [Excel] Doppio controllo di cella e valore

Postdi ricky53 » 23/11/12 21:13

Ciao,
prima di
Codice: Seleziona tutto
    If Range("B2").Value < 0.0005 And TimeValue(Now) - TimeValue(Range("D1").Value) > 0.001 Then


inserisci
Codice: Seleziona tutto
    If Range("D1") = "" Then
        MsgBox "Inserire un valore nella cella 'D1'"
        Exit Sub ' <<<======== vedi che tipo di uscita occorre forse Exit For
    End If
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] Doppio controllo di cella e valore

Postdi scossa » 23/11/12 21:47

mpsinf ha scritto:Il seguente ciclo mi permette di eseguire un controllo se in B2 il valore del tempo è inferiore a circa 40" e la differnza del tempo tra adesso e il valore di D1 è maggiore al minuto e mezzo circa, ma il tutto va in errore se la cella D1 per un particolare momento è vuota

Codice: Seleziona tutto
 If Range("B2").Value < 0.0005 And TimeValue(Now) - TimeValue(Range("D1").Value) > 0.001 Then
  MsgBox "estraggo"
      Call A2_Estrai_valori
  Else
  Exit For ' annulla analisi aste successive se c'è 1 aste in scadenza entro 35 sec. (0.0004)
  End If


senza mettere un altra nidificazione if come posso risolvere ?


Hai postato solo un pezzo di codice, non dici cosa c'è in D1 ..... per cui azzardo, ipotizzando in D1 una data (un orario):
modifica semplicemente
Codice: Seleziona tutto
 If Range("B2").Value < 0.0005 And TimeValue(Now) - TimeValue(Range("D1").Value) > 0.001 Then

in
Codice: Seleziona tutto
If Range("B2").Value < 0.0005 And Now - Range("D1").Value > 0.001 Then
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] Doppio controllo di cella e valore

Postdi mpsinf » 24/11/12 08:07

In effetti avevo sottointeso non scrivendolo che in D1 se non è vuota c'è un orario in forma stringa
23/11/2012 20:25:11
però se in un qualsiasi cella inserisco "=valore (D1)" ottengo 41236,85 quindi viene convertita in un valore corretto ecco il perchè del TimeValue...
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: [Excel] Doppio controllo di cella e valore

Postdi scossa » 24/11/12 10:06

mpsinf ha scritto:In effetti avevo sottointeso non scrivendolo che in D1 se non è vuota c'è un orario in forma stringa
23/11/2012 20:25:11
però se in un qualsiasi cella inserisco "=valore (D1)" ottengo 41236,85 quindi viene convertita in un valore corretto ecco il perchè del TimeValue...


E quindi
Codice: Seleziona tutto
If Range("B2").Value < 0.0005 And Now - Range("D1").Value > 0.001 Then

come ti ho suggerito funziona, giusto?
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] Doppio controllo di cella e valore

Postdi mpsinf » 24/11/12 10:09

Aggiungo questo altro problema sempre di "date valore"

Dovendo controllare la differenza di tempo tra due date se lo eseguo con comando in Excel
tipo cella G1 "=ADESSO()" in cella G2 stringa 23/11/2012 18:41:10 in cella G3 = "G1-G2" ottengo 0,63....

in vba come faccio ? visto che

If TimeValue(Range("G1").Value) - TimeValue(Range("G2).Value > 0.0001 Then

mi da un numero negativo perchè considera il valore dell'ora di adesso è 10:09 e in G" è 18:41 e non del valore assoluto rispetto alla data ?
ora provo con DateDiff
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: [Excel] Doppio controllo di cella e valore

Postdi scossa » 24/11/12 10:24

mpsinf ha scritto:Aggiungo questo altro problema sempre di "date valore"

Dovendo controllare la differenza di tempo tra due date se lo eseguo con comando in Excel
tipo cella G1 "=ADESSO()" in cella G2 stringa 23/11/2012 18:41:10 in cella G3 = "G1-G2" ottengo 0,63....

in vba come faccio ? visto che

If TimeValue(Range("G1").Value) - TimeValue(Range("G2).Value > 0.0001 Then

mi da un numero negativo perchè considera il valore dell'ora di adesso è 10:09 e in G" è 18:41 e non del valore assoluto rispetto alla data ?
ho provato con DateDiff ma non capisco come interval cosa devo mettere visto che dopo va date1 e date2


Sinceramente non capisco perché ti ostini ad usare inutilmente TimeValue():
Codice: Seleziona tutto
 If Range("G1").Value - Range("G2).Value > 0.0001 Then
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] Doppio controllo di cella e valore

Postdi Anthony47 » 24/11/12 12:37

@Scossa:
il problema e' che in G2 c' e' una stringa.

@mpsinf
Se in G1 e G2 hai data&ora e vuoi calcolare la differenza non devi usare TimeValue, perche' questa funzione ti restituisce solo la parte oraria e ignora la parte data.
Userai invece CDate su G2, mentre G1 e' gia' una data/ora e non hai bisogno di convertirla
Codice: Seleziona tutto
If Range("G1").Value - CDate(Range("G2").Value) >0.0001 Then

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Doppio controllo di cella e valore

Postdi scossa » 24/11/12 13:02

Anthony47 ha scritto:@Scossa:
il problema e' che in G2 c' e' una stringa.


mpsinf ha detto che "...c'è un orario in forma stringa 23/11/2012 20:25:11"

Visto che lui non ne vuole sapere di condividere il file, si tira ad indovinare.
Quindi in G2 c'è '23/11/2012 18:41:10 con l'apice davanti (così non la trasforma in data)?
In questo caso l'uso di CDate() che hai suggerito è perfetto.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] Doppio controllo di cella e valore

Postdi Anthony47 » 24/11/12 13:18

Intendevo "una stringa che indica una data&ora"
In tal caso l' operazione Range("G1").Value - Range("G2").Value restituirebbe l' errore Type mismatch.

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Doppio controllo di cella e valore

Postdi scossa » 24/11/12 13:27

Anthony47 ha scritto:Intendevo "una stringa che indica una data&ora"
In tal caso l' operazione Range("G1").Value - Range("G2").Value restituirebbe l' errore Type mismatch.


Ciao Anthony,

Il punto non è cosa intendevi TU ma cosa intendeva LUI, visto che parlava di orario.

Sinceramente, sarò limitato io, ma non vedo come possa esserci in una cella una stringa che indica una data&ora se non la stessa con l'apicetto davanti o una formula che restituisca una stringa ... tutte cose che l'OP non ha specificato.

N.B.: senza alcuna polemica.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] Doppio controllo di cella e valore

Postdi mpsinf » 24/11/12 18:35

scossa ha scritto:Sinceramente, sarò limitato io, ma non vedo come possa esserci in una cella una stringa che indica una data&ora se non la stessa con l'apicetto davanti o una formula che restituisca una stringa ... tutte cose che l'OP non ha specificato.


Se acquisisci dati da web ti accorgerai che le date sono importate come stringhe
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: [Excel] Doppio controllo di cella e valore

Postdi scossa » 24/11/12 19:00

mpsinf ha scritto:
scossa ha scritto:Sinceramente, sarò limitato io, ma non vedo come possa esserci in una cella una stringa che indica una data&ora se non la stessa con l'apicetto davanti o una formula che restituisca una stringa ... tutte cose che l'OP non ha specificato.


Se acquisisci dati da web ti accorgerai che le date sono importate come stringhe


Lo dici adesso, mi pare che prima tu non l'abbia scritto da nessuna parte che i valori nelle celle sono acquisiti via query da web ...
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Doppio controllo di cella e valore":


Chi c’è in linea

Visitano il forum: Anthony47 e 9 ospiti