› Sviluppare funzionalita su Microsoft Office con VBA › Eliminare Errore #VALORE! in MATRICE PRODOTTO a causa di stringhe
-
AutoreArticoli
-
SUBTOTALE con SCARTO funziona bene, è il.resto che non riesco ad ottenerlo come vettore
Perchè usi scarto?
Il Problema è il filtro in combinazione con la condizione.
Buonanotte a tutti,
Ho scoperto una cosa interessante: usando la formula
SE.ERRORE((B2:B10)*24,"0") >6
e inserendo la formula come ARRAY, Cioè Ctrl +Shift + Enter mi restituisce un vettore che conta sia gli orari maggiori di 6 che le celle sostituite con "0". Infatti essendo un testo sono maggiori di ogni numero, quindi li conta sempre. Perciò siamo a cavallo.
Ora il problema è che voglio inserire la formula nella cella con VBA e usando FormulaArray non posso inserire formule più lunghe di 255 caratteri. Devo trovare un modo per aggirarlo perché inserirò molte formule associate a turno del mattino, pomeriggio, notte, malattie ecc.. nella stessa cella
ciao
sono rimasto incuriosito dalla tua scoperta, e adesso mi puoi spiegare cosa serve la formula
SE.ERRORE((B2:B10)*24;"0") >6 che ritorna Vero o Falso , nel tuo caso Falso in quanto fa una sola verifica sulla cella B2 orario ( 6:00 )e non sulle altre celle ??????
altra cosa , ho visto che ai dichiarato un programmino una funzione in VBA
in VBA un programmino puo' essere una Sub() mentre una Function e' una funzione
ai detto anche che non volevi utilizzare VBA ma adesso cerchi un modo di creare un qualcosa in VBA prova studiarti la funzione Evaluate() in VBA o Valuta.Testo() in excel se fanno al caso tuo, usa google per trovare le sintassi di queste
certo che se tu crei una sub() o Macro per il tuo caso risolvi tutti i tuoi problemi senza usare funzioni o formule in celle di excel
detto questo aspettando gli sviluppi al tuo problema ,
ciao
Buonasera,
ho risolto il problema, bastava inserire le formule come ARRAy usando Ctrl+Shift+Enter e imporre che in caso di errore si sostituisca un carattere qualsiasi: i caratteri sono maggiori di tutti i numeri...il resto è banale da sistemare.
Ora ho un nuovo problema che vi sottopongo in un'altra discussione .
Grazie a tutti per gli sforzi e la pazienza 🙂
Buongiorno,
Tra università e casa ho poco tempo per programmare e chiarire tutti i dubbi , ma ci provo.0) se inserisci la formula in modalità ARRAY restituisce un valore per ogni cella e non solo il carattere 0 in caso di errore. Quindi problema risolto
1)Mi serve una formula che mi conti i turni di mattina, pomeriggio, notte. Il SE.ERRORE con quella condizione va accoppiata con un altro SE.ERRORE con la condizione <=12 per ottenere solo i turni del Mattino. Poi la riadatto per ottenere i turni del Pomeriggio ecc.. ovviamente la formula va usata dentro la funzione MATR.SOMMA.PRODOTTO con SUBTOTALE e SCARTO in modo da poter lavorare solo sulle celle filtrate.
2) Mi serve una formula che si aggiorni automaticamente, se uso una Macro o la chiamo ogni volta ( con un tasto) o uso un evento ad esempio CalculateSheet: quest'ultima possibilità l'ho già provata ma è molto lenta .
Perciò ho pensato di creare una Macro che chiamo una sola volta per tutte e di incollare il Formulone direttamente nella cella ma in modalità ARRAY , quindi con la limitazione di formule di lunghezza minore a 255 caratteri se la inserisco tramite VBA.
Oppure Potrei creare una funzione che mi incolli la stringa della formula in quella cella. Resta il problema di incollarla come ARRAY a causa dei 255 caratteri.
Nella cella uscirebbe una cosa del genere"
MATTINA = 13 | POMERIGGIO = 18 | NOTTE = 10 ecc..Al posto dei numeri ci sarebbero i Formuloni con MATR.SOMMA PRODOTTO e potete immaginare che supero abbondantemente i 255 caratteri.
Se avete una soluzione più facile e diretta sono tutto orecchie/occhi.
-
AutoreArticoli