Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

STRINGA.ESTRAI con più condizioni

Ultimo Aggiornamento: 11/05/2018 01:31
Post: 1
Registrato il: 06/05/2018
Età: 57
Utente Junior
2007 e 365(in prova)
OFFLINE
06/05/2018 19:25

Buongiorno Gruppo,
avrei bisogno di un aiuto perché non essendo molto pratico di formule e VBA mi sono “piantato” ☹ con la creazione del foglio Excel che mi servirebbe al lavoro,devo scomporre questa stringa di numeri in vari blocchi che da normativa GS1 corrispondono a:

01980081105118003103010390171804191006337079

074878000018039120636772399002500787

-PAESE DI PRODUZIONE (i primi due caratteri)
-AZIENDA (dal quarto per i succ. 7 caratteri)
-CODICE PRODOTTO (dal decimo per i succ. 7 caratteri)
-LOTTO DI PRODUZIONE (gli ultimi 8 caratteri)

Ho trovato validi esempi in rete per le formule e per le macro e le ho lavorate per il mio uso, già presenti e funzionanti nel foglio ma ora sono fermo.
Vi spiego: ho creato un documento di excel dove immetto automaticamente in colonna B la lettura di uno scanner per codici a barre e a seguire con un modulo VBA mi immette in colonna A la data del giorno in cui effettuo la lettura,in col. C con =SE(VAL.VUOTO(B2);" ";VALORE(STRINGA.ESTRAI(B2;4;7))) estraggo la parte di codice relativa all’azienda che,con =CERCA.VERT e l’aiuto del foglio “legenda” in cui ho creato 2 tabelle/matrici, a seguire in col. D il nome effettivo dell’azienda ricavato dalla comparazione della tabella stessa.
In col. F e G con il medesimo procedimento mi estrae e visualizza il codice prodotto.
Ora vengo al problema, in col.H con lo stesso sistema estraggo gli ultimi 8 caratteri della stringa che corrispondono al lotto di produzione che sono sempre in quella posizione per i codici a barre italiani ma che cambiano per le produzioni europee o extraeu,come ho messo nell’esempio evidenziati in rosso s vedono i due blocchi in posiz diversa.
Ho provato e d aggiungere un =SE alla formula già presente in col H con la variabile che se le prime due cifre della stringa sono 01 mi estrae come è già in formula(le ultime 8 cifre) invece se è 07 ( o diversa da 01 meglio ancora ) mi estrae l’altro blocco (dalla 18esima alla 25esima) ma non sono proprio riuscito a combinare q.sa.
Forse con VBA?
Allego file di excel dove ho già scan diversi codici a barre,fino alla riga 30 sono ok perché prodotti ita poi dalla riga 31:34 cambiano le prime 2 cifre derlla stringa e i valori in col. H sono estratti errati.
Grazie Raga dell’attenzione.
Post: 185
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Junior
2016
ONLINE
06/05/2018 20:33

Buonasera

H2 da trascinare in basso


=SE(SINISTRA(B2;2)<>"01";STRINGA.ESTRAI(B2;18;8);DESTRA(B2;8))
Post: 1
Registrato il: 06/05/2018
Età: 57
Utente Junior
2007 e 365(in prova)
OFFLINE
06/05/2018 23:46

Grazie Danilo [SM=g27811]
domani provo e ti aggiorno.
Post: 2
Registrato il: 06/05/2018
Età: 57
Utente Junior
2007 e 365(in prova)
OFFLINE
09/05/2018 22:01

Funziona si!! :-))
Grazie Danilo.
Ora mi si è presentata un altra variabile della funzione =SE ma poi vedrò se richiedere ancora il tuo aiuto. Per ora collaudo il foglio per alcuni gg.
Un saluto al Forum.
Post: 3
Registrato il: 06/05/2018
Età: 57
Utente Junior
2007 e 365(in prova)
OFFLINE
10/05/2018 19:39

=STRINGA.ESTRAI con più condizioni ( altra domanda)
Buonasera Gruppo e buonasera Danilo,
si perfetta la formula che mi hai corretto e che ho messo in col. H ora in col. F devo estrarre il codice prodotto a seconda che le prime due cifre della stringa in B siano non più 01 o <>diverso da 01 ma che preceduto da =SE mi estragga una parte di stringa a seconda che questa inizi con 01 piuttosto che con 69 o con 07 ecc. ecc.
Ho provato tutto il gg a modificare il tuo suggerimento con delle nidificaziono (...si dice così?) tipo questa:

=SE(VAL.VUOTO(B62);" ");SE(SINISTRA(B62;2)=69;STRINGA.ESTRAI(B62;10;4));SE(SINISTRA(B62;2)="01";STRINGA.ESTRAI(B62;15;4);STRINGA.ESTRAI(B62;10;7))

ma non mi funziona mai [SM=g27834] [SM=g27834] [SM=g27834]

Grazie dell'attenzione ragazzi,ora scappo ritirare il figlio ad allenamento.
Ciao.
Mau
(excel 2007 preferito...office 635 in prova)
Post: 3.438
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
10/05/2018 20:08

Forse non ho capito, però =SE(VAL.VUOTO(B62);" ";... è sbagliato =SE(B2="";"";...
inoltre un ) nel posto errato. cosi funziona mà non ho verificato se è quello che desideri. In riga2
=SE(B2="";"";SE(SINISTRA(B2;2)="69";STRINGA.ESTRAI(B2;10;4);SE(SINISTRA(B2;2)="01";STRINGA.ESTRAI(B2;15;4);STRINGA.ESTRAI(B2;10;7))))
[Modificato da raffaele1953 10/05/2018 20:09]
Excel 2013
Post: 189
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Junior
2016
ONLINE
10/05/2018 20:10

Buonasera
non entro nel merito della formula ma già al 69 mancano gli apici
devi scrivere "69"...perchè ti ricordo che stai lavorando con testi e non numeri....detto questo
elenca queste condizioni e facciamo la formula
esempio

69 estrai questo
01 estrai quello
07 estrai quest'altro

in attesa....un saluto

edit...Buonasera Raffaele...leggo ora
[Modificato da DANILOFIORINI 10/05/2018 20:11]
Post: 4
Registrato il: 06/05/2018
Età: 57
Utente Junior
2007 e 365(in prova)
OFFLINE
10/05/2018 21:54

Grazie! proverò a sviluppare (.. per imparare) la formula con il suo ordine sulle basi che ha scritto Danilo. Proverò anche la formula di Raffaele... grazie.
Avete fatto bene a nn entrare nel merito della formula :-/ ma da B2 a B62 (l'esempio che ho postato) sono state tutte prove diverse risultate fallimentari,temo di nn essere portato [SM=g27812] ...ma non mollerò.
A proposito quante (.. nidificazioni?) con SE posso mettere in una formula?
Saluti.
Post: 190
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Junior
2016
ONLINE
10/05/2018 22:19

prova...non è impossibile se non riesci elenca le condizioni e la formula si fà....
Post: 3.441
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
11/05/2018 01:31

>>>quante (.. nidificazioni?)
Excel 2007 = 64
Solo un suggerimento creati la formula a pezzi su un TXT...
=SE(B2="";"";esegui) >>>questa non provarla

Prepara la prima e provala
=SE(SINISTRA(B2;2)="69";STRINGA.ESTRAI(B2;10;4);"")
Va bene il risultato è giusto? Prepara la seconda...e provala
SE(SINISTRA(B2;2)="01";STRINGA.ESTRAI(B2;15;4);"")
Va bene il risultato è giusto? Prepara la terza...ecc ecc ecc
Alla fine partendo dal basso del TXT, Copy l'intera riga (tranne il segno uguale) e la incolli nella penultima al posto dei "", dopo prendi la penultima (tranne il segno uguale) e la incolli nella terz'ultima cosi via sino alla prima.
A questo punto la Copy e la metti al posto di esegui.
Excel 2013
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Indice e confronta con più condizioni avendo nomi ripetuti (5 messaggi, agg.: 26/09/2019 17:21)
Moltiplicazioni con condizioni (4 messaggi, agg.: 16/10/2018 08:50)
Se annidati con più condizioni (6 messaggi, agg.: 18/11/2018 19:04)
Massimo e minimo con condizione (6 messaggi, agg.: 03/05/2019 14:47)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:34. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com