› Excel e gli applicativi Microsoft Office › condizione IF vera ma risultato falso
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
-
AutoreArticoli
-
ops...e' successo casino...rimedio adesso...avevo aperto la discussione ma ho chiuso il browser..
Ciao a tutti, ho un problema con la condizione IF, il risultato della condizione e' sbagliato. E' un po di tempo che spulcio internet a destra e a sinistra per trovare spunti e soluzioni. Qui ho trovate tante risposte utili come in forum americani quindi ho deciso di chiedervi aiuto. La mia necessità è quella di eseguire una ricerca di orario, uno di inizio e uno di fine. l'orario di ricerca sono io a costruirlo. Da A prendo ore e minuti, da B prendo solo i secondi, li unisco insieme e ottengo l'orario che devo cercare sulla colonna B. Tutto il castello che ho creato funziona correttamente, il primo ciclo FOR - IF che uso per verificare l'orario 'inizio' funziona mentre il secondo ciclo 'fine'(che non e' altro che la copia del primo come logica ed adattato all'uso) mi riporta un FALSO anche se e' vero. Premetto che prima ho tentato di usare cells.find ma vedendo che non ottenevo il risultato voluto ho optato per il ciclo for. Qui riporto il pezzo di macro che fa il controllo... le variabili in uso sono dichiarate come DATE 'primo ciclo for per la comparazione inizio orario da cercare For i = 2 To riga2 cerca = Sheets("temperature").Cells(i, 3) If cerca = oracompleta Then GoTo proxchk 'se vero passa al secondo controllo altrimenti errore e stop Next i GoTo errore proxchk: 'secondo ciclo for per la comparazione fine orario da cercare For ii = i To riga2 cerca1 = Sheets("temperature").Cells(ii, 3) 'questa condizione la maggior parte delle volte anche se vera mi passa il falso If cerca1 = oracompleta2 Then GoTo ok1 'se vero procede fino alla fine della macro altrimenti errore e stop Next ii GoTo errore ok1: In allegato ho anche messo tutto il documento, la macro e' la numero 15 che si chiama GetChartValues2() Per vederla funzionare occorre andare sul foglio "analisi" selezionare il grafico nel mezzo (orario 18:00:03 - 18:05:03) e cliccare sul pulsante verde. La macro copia il range dell'orario del grafico nel foglio P, qui prelevo la prima ed ultima cella, ne estraggo ora e minuti e tolgo i secondi. Prelevo dal foglio "temperature" la prima cella con l'orario, tolgo ore e minuti, i secondi li sommo all'orario precedentemente trovato. Questi 2 orari li devo cercare nel foglio "temperature", tutto sto casino perchè voglio far in modo che attivando la macro dal foglio "analisi" il grafico si aggiorni con lo stesso orario anche nel foglio "temperature". I 2 orari non possono essere sincronizzati al secondo, sono 2 strumenti di acquisizione dati ed ognuno opera per conto suo, quindi voglio "utilizzando un termine moderno" sincronizzare i 2 orari simili ma differenti solo nei secondi. Il problema nasce al secondo ciclo di controllo per l'orario di fine, la condizione IF mi da FALSO anche se l'orario c'è! sia l'una che l'altra variabile sono uguali. A volte funziona a volte no! Sembra che in base all'orario cambia il risultato. Mi sono dilungato ma ho voluto spiegare come funziona, sperando di esserci riuscito... Perdonate la serie infinita di strafalcioni che trovate nelle macro, non c'è un ordino logico, è da poco che mi sono buttato nell'utilizzo delle macro. La macro 15 l'ho riempita di commenti per far capire meglio...spero.Allegati:
You must be logged in to view attached files.Aggiungo...se non fosse proprio chiaro quello che ho spiegato...aprite il documento, andate sul foglio analisi, selezionate con un click il terzo grafico e cliccate sul tasto rosso. la pagina verrà aggiornata ricreandola con il grafico e l'orario selezionato, il codice non e' ancora completo quindi il tasto verde non viene cancellato.-
Questa risposta è stata modificata 8 anni, 2 mesi fa da
muccapazza.
CiaoPenso sia necessario rivedere con attenzione il codice che compone gli orari.Coi dati presenti nel foglio, quando lancio la macro (non col pulsante verde - non funziona) mi dà come oracompleta 15:46:08, orario che non esiste nel Foglio "temperature" e, pertanto, mi caccia fuori.Seguendo il tuo suggerimento la risposta: è ritenta, sarai più fortunato!Puoi confermare? Puoi indicare più dettagliatamente?Ciao,Mario-
Questa risposta è stata modificata 8 anni, 2 mesi fa da
Marius44.
CiaoQualche informazione in più non sarebbe male. Cosa voui fare con la macro?tanto per cominciare avresti potuto dire a quale macro fa riferimento il pulsante osso e questa macro in quale modulo si trova (ce ne sono un sacco!!!!)Ora il primo errore viene dall'istruzioneNumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)Penso che sia dovuto al fatto che non vi è alcun Grafico attivo.Evita di usare gli elementi attivi ma chiama gli oggetti con il loro nome.Ora ho notato altre cose:1) usi tantissimo i Goto. Evitali il più possibile, incasinano la lettura e ti portano a fare errori di costruzione codice.Io li uso solo per la gestione errori.2) esiste Exit Sub che ti fa terminare la macro in qualsiasi punto (al posto di fare un goto finex)3) Ho visto nel pezzo che hai postato sopra che fai riferimento ad un indice di ciclo fuori dal ciclo.Che io sappia sono strutture da evitare anche perchè con una verifica veloce il valore potrebbe essere diverso se il ciclo finisce oppure se lo interrompi4) Per uscire da un ciclo esiste Exit For5) Usa un OPTION explicit all'inizio che ti aiuta a dichiarare le variabili.A disposizione per ulteriori chiarimenti.CiaoLucaCiao a tutti e grazie per il vostro interessamento....vedo che c'è un po di confusione...Marius44 la macro per funzionare bisogna selezionare un grafico, come ho suggerito nel post precedente bisogna usare il secondo o il terzo non il primo...l'errore è più che giusto.Luca73 ti rispondo passo passo...La macro, cito il testo del post precedente.... la macro e’ la numero 15 che si chiama GetChartValues2(), quindi il tasto verde fa riferimento a quella, scusate ma pensavo fosse abbastanza chiaro il riferimento.L'errore da te citato in riferimento a number of rows eccetera...si, da errore se non si seleziona il grafico, occorre selezionarlo, altrimenti con 5/6 grafici a video non sa quale prendere. cito testo...Per vederla funzionare occorre andare sul foglio “analisi” selezionare il grafico nel mezzo (orario 18:00:03 – 18:05:03) e cliccare sul pulsante verde.Buono il consiglio di usare nomi fissi ma io uso una macro per creare ogni volta i grafici, ho posto un limite di 10 ma nulla mi vieta di andare avanti ad oltranza, scarto a priori il fatto di dare un nome fisso ad un grafico.1) i goto son bellissimi heheehe, capisco quello che dici, inizialmente non c'erano ma allargando le esigenze a volte mi son necessari per non stare a riscrivere tutta la macro, li uso per saltare porzioni di codici in modo anche da poter renderla più flessibile alle mie esigenze.2) giusta osservazione exit sub...ma ho fatto in quel modo per non star a scrivere 2 o 3 volte lo stesso messaggio, è più corto goto finex: risultato il medesimo, meno memoria e meno ciclo clock per eseguirlo ahahahha3)se intendi la variabile I del primo ciclo, be mi e' parso giusto usarla dato che riprendo da quel punto per iniziare il secondo ciclo piuttosto che iniziarlo da 1, non ho riscontrato problemi nel fare così4) ai tempi del commodore 64 non esisteva exit for, l'abitudine è rimasta tale, però dai, excel non si offende per questa mancanza 🙂5) su option mi devo documentare, non conosco, è già tanto se le dichiaro le variabiliLuca73 mi chiedi altre info...ero sicuro di aver spiegato bene...sinceramente ho bisogno che tu mi dica cosa non è chiaro.Nel posto dopo la macro ho spiegato cosa voglio, cosa fa la macro, ho cercato di essere sintetico perchè, credimi, farei prima a spiegarlo al video che a scriverlo.La macro, nella sua bruttezza funziona perfettamente se il secondo ciclo for non padella.Il problema non e' nel codice, ho passato quasi 6 ore per trovare la soluzione alla mia esigenza, mi ci sono rincoglionito, i calcoli son giusti, il taglia cuci incolla delle ore e secondi è corretto....a volte il solo cambiare un orario fa funzionare la macro...per esempio..18:00:08 e 18:30:08 non funziona....invece 18:00:08 e 18:31:08 funziona! Ovviamente 18:30:08 esiste ma quando viene comparata, anche se giusta risulta falsa!.Mi viene da pensare che excel mi mostri una cosa che non è...magari esegue un arrotondamento di un decimale che non mi fa vedere e quindi per lui è falso.Ho provate anche a gestire le variabili come numeri invece di DATE ma il risultato è il medesimo.Se volete posso provare con cells.find ma dovete, gentilmente, guidarmi nel mettere le opzioni più giuste, anche se ciò già provato con i medesimi risultati.ho risolto...la risposta l'ho trovata in un'altro post qui. -
Questa risposta è stata modificata 8 anni, 2 mesi fa da
-
AutoreArticoli
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
