Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    13

    excel 2007: Come dare un valore numerico considerando solo UNA PAROLA di un testo

    Buongiorno a tutti !
    Volevo chiedervi se potevate aiutarmi ad ottimizzare la funzione cerca per un mio foglio di calcolo excel 2007.

    Vi spiego in sintesi qual'è il mio problema.
    Ho un elenco di diversi prodotti, ed ogni prodotto è disponibile in vari formati.

    Sono riuscito a creare il menu a tendina in modo da poter selezionare il prodotto cercato, e sono anche riuscito a fare in modo che in una apposita colonna (sulla stessa riga del prodotto) venga riportato il volume in litri del prodotto scelto.

    Ho raggiunto l'obiettivo, ma la formula che ho utilizzato è estremamente lunga, e quando andrò a sviluppare il listino completo, la formula avrebbe dimensioni trascendenti.

    Sotto la colonna "tipo confezione", ho utilizzato la seguente formula cerca in excel:

    (ipotizziamo che il prodotto selezionato dal menu a tendina si trovi nella casella A8, e che le opzioni disponibli siano
    PRODOTTO A DA 1 l
    PRODOTTO A DA 4 l
    PRODOTTO B DA 1 l
    PRODOTTO B DA 12 l

    =CERCA(A8;{"PRODOTTO A DA 1 l";"PRODOTTO A DA 4 l";"PRODOTTO B DA 1 l";"PRODOTTO B DA 12 l"};{"1";"4";"1";"12"})

    Come vedete ho dovuto indicare nella formula esattamente il nome del PRODOTTO... rendendo la formula estremamente lunga.
    La mia domanda è:
    Dato che (fortunatamente) le tipologie di confezioni esistenti sono poche e standard (massimo 10 tipi di confezioni), mentre i prodotti saranno tanti, volevo chiedervi:
    esiste la possibilità, in excel 2007, di ottimizzare tale funzione cerca, facendole cercare solo la parte finale del nome del prodotto (dove in effetti si riporta la taglia) ?
    In questo modo sarebbe tutto ottimizzato perché, a prescindere dal prodotto, excel capisce dalla semplice "parola chiave" che numero attribuire alla colonna del valore.

    Sperando di essere riuscito ad esporre il mio problema in maniera comprensibile , vi ringrazio anticipatamente !

  2. #2
    Ciao,
    se ho capito bene questa formula dovrebbe risolverti il problema:

    codice:
    =ANNULLA.SPAZI(STRINGA.ESTRAI(A8;LUNGHEZZA(A8)-3;2))
    La stringa.estrai estrae i due caratteri corrispondenti a "12" oppure a " 1" o a " 4" cioè i caratteri ottenuti partendo da lunghezza-3 e andando avanti di 2.

    Ad esempio la stringa "PRODOTTO A DA 1 l" è lunga 17 byte, 17-3 fa 14, quindi vengono estratti i byte 14 e 15 corrispondenti " 1".

    La annulla.spazi poi elimina lo spazio iniziale di troppo che si ottiene quando il formato è di una sola cifra.

    E così il tuo problema dovrebbe essere risolto.

    Voglio però fare una piccola osservazione e cioè che il tuo è un piccolo database e quando si progetta un DB bisogna prestare molta attenzione al disegno dei dati per evitare di trovarsi, in futuro, al crescere delle esigenze, con dati difficilmente manipolabili.
    Nel tuo caso sarebbe corretto inserire in celle diverse l'anagrafica del prodotto e i formati possibili.
    Mi rendo conto però che la cosa complica il lavoro e richiede un dispendio di tempo supplementere.
    Valuta tu, dipende da quanto potrà crescere il DB e da quanto tempo e voglia hai di fare le cose perfettine o piuttosto funzionanti e basta.






    l'anagrafica del prodotto e i formati di vendita
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    13

    grazie

    Ciao!

    Non so davvero come ringraziarti, ha funzionato perfettamente la tua soluzione !!!

    Aggiungo che tale soluzione, richiede una attenta e ben precisa formattazione nel caso in cui le taglie abbiano una lunghezza diversa (ES. Taglia 1, Taglia 10, Taglia 100, Taglia 1000 ) e siamo interessati a riportare in una colonna i numeri 1, 10, 100, 1000...

    Fortunatamente non mi è risultato difficile grazie alla tua chiara descrizione trovare il numero giusto di byte da assegnare al codice stringa, dopo aver trovato la corretta formattazione.

    Nel mio caso la formattazione da rispettare nell'anagrafica prodotti è la seguente:
    (xy è il numero di cifre che da la dimensione, ed l sta per litri ), es. "10 l" = dieci litri.

    NOME-PRODOTTO NOME-TAGLIA1 12 l
    NOME-PRODOTTO NOME-TAGLIA2 205l
    NOME-PRODOTTO NOME-TAGLIA3 1000l

    Utilizzando
    codice:
    =ANNULLA.SPAZI(STRINGA.ESTRAI(A30;LUNGHEZZA(A30)-4;4))
    Grazie infinite, sei stato gentilissimo, chiarissimo e disponibile !

    P.S. In merito alla tua osservazione, che apprezzo e condivido, nel mio caso avevo pensato fosse più pratico così perché i prodotti sono 400 ma purtroppo non tutti esistenti nelle varie tipologie di taglie possibili, pertanto essendo ogni prodotto esistente per un tot tipo di taglie, avevo pensato di fare un unico elenco ma più dettagliato, dove appunto univo anagrafica e keyword finale.

    Sfruttando l'elenco dettagliato posso subito sfruttare il pratico menu a tendina in excel, in modo che non sia possibile selezionare formati inesistenti per il prodotto scelto.

    p.s.2 Non saprei nemmeno come fare a fare che se sceglie il prodotto A > ci sono tot taglie nel menu a tendina, se sceglie il prodotto B > ci sono tot taglie disponibili...

    Come si potrebbe fare ? :-O

    GRAZIE ANCORA !!!!

  4. #4
    Fammi capire una cosa: come avviene l'imputazione dei dati?

    Ti arriva, chessò, un file dai fornitori? Oppure tu, o qualcuno per te, inserite a mano uno per uno i quattrocento prodotti? O come altro funziona?

    Ho bisogno di saperlo per capire dove è meglio intervenire per separare la descrizione dalla taglia.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    13
    Originariamente inviato da NonCeLaFaccio+
    Fammi capire una cosa: come avviene l'imputazione dei dati?

    Ti arriva, chessò, un file dai fornitori? Oppure tu, o qualcuno per te, inserite a mano uno per uno i quattrocento prodotti? O come altro funziona?

    Ho bisogno di saperlo per capire dove è meglio intervenire per separare la descrizione dalla taglia.
    Possiedo già il listino in excel fornitomi dal fornitore, con tutto l'elenco dei prodotti.
    Sono circa 400 righe perché ogni prodotto compare mediamente x3 volte perché mediamente ogni prodotto è disponibile in 3 differenti taglie, logicamente ogni prodotto è disponibile in taglie differenti..., magari qualche prodotto è disponibile in 2 tipi di taglie, un altro in 4 taglie, etc...

    Tale listino, in base alle disposizioni aziendali del fornitore, è soggetto a piccole variazioni (in termini di taglia e magari anche in termini di anagrafica...)

    Ora io sto realizzando questo programma per chi si occupa di effettuare gli ordini (di volta in volta differenti), in modo tale da rendere immediata di volta in volta la selezione dei prodotti (e rispettiva taglia cercata) e dei quantitativi richiesti...


    Spero di averti fornito tutti i dati in maniera più o meno chiara...

  6. #6
    Bè allora c'è poco da fare, se il DB ti arriva già popolato non avrebbe senso tentare di rimetterlo a posto e poi magari vederselo variare e dover rifare il lavoro.
    A questo punto va bene come stai facendo, estrai le informazioni che ti servono giocando per quanto possibile con le funzioni di stringa.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    13

    risalire all'indirizzo di una cella richiamata da elenco a tendina

    perfetto grazie.

    Volevo chiederti un'altro piccolo aiuto.

    Come ti dicevo ho in un foglio excel tutto l'elenco prodotti e prezzi.

    Ho creato con tale elenco, una comodo elenco a tendina, per selezionare il prodotto.

    Una volta selezionato il prodotto "dall'elenco a tendina", c'è un modo per visualizzare nella cella adiacente, il rispettivo prezzo (noto) ?

    Non saprei innanzitutto come dire ad excel di risalire all'indirizzo di una cella (prodotto) richiamata da elenco a tendina.

    Cioè io in un foglio separato ho
    prodottoA | prezzoA
    prodottoB | prezzoB

    Ho creato il menu a tendina in altro foglio, lo clicchi e si srotola la tendina riportante i 2 prodotti.

    Facciamo che selezioni il prodottoA, e siamo per esempio nella colonna A riga 1.
    Come faccio a fare comparire nella cella adiacente (B1) il prezzo noto e collocato appunto adiacento al prodotto preso dall'elenco "esteso" ?

  8. #8
    Se la tabella Prodotti/Prezzi è ordinata puoi usare la cerca.vert, altrimenti bisogna fare un VBA.

    Adesso non ho il tempo di provare ma la cerca.vert dovrebbe essere così:

    codice:
    CERCA.VERT(A1;Foglio2!A1:B2;2)
    Questo ammettendo che la tendina sia in A1 e che la tabella prodotti sia nel Foglio2 nelle celle A1:B2.

    In questo modo dici a excel di cercare il valore selezionato nella tendina, cioè A1, nella tabella dei dati (la ricerca viene effettuata sempre nella prima colonna, cioè nella colonna dei prodotti) e di prendere il secondo valore (indicato dal 2 come ultimo parametro).

    Però come ti dicevo funziona solo se la tabella è ordinata.

    Se non è ordinata e non puoi ordinarla posta con precisione tutti i dati (dimensioni della tabella, posizione della tendina e nomi dei fogli) che appena posso ti faccio un VBA.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    13
    Sei un genio !
    Fortunatamente i prodotto sono già ordinati in ordine alfabetico, e la tua soluzione ha funzionato a perfezione! (devo solo verificare per sicurezza, dato che molti prodotti sono clonati più volte di fila, cambiando solo nella parte finale della descrizione causa taglia diversa, ma pare che excel in questi casi rispetti l'ordine...)



    Adesso sorge un altro problema... non so se è possibile raggirarlo.

    Per il database clienti ho dovuto ordinare i clienti mettendo prefisso progressivo (01+Rag.SocialeCliente1, 02+Rag.SocialeCliente2, .... etc...) altrimenti il comando cerca vert non funzionava.

    Ti volevo chiedere:
    Esiste un modo sfruttando magari la formattazione condizionale, per fare diventare di colore bianco questi prefissi ? Es. fare in modo che 01+Rag.SocialeCliente1 diventi semplicemente Rag.SocialeCliente1 facendo colorare di bianco il prefisso 01 ?

    Se esiste questa possibilità, potrei risolvere tante cose antipatiche nel mio calcolatore excel...

    Oppure non so se ancora meglio si potesse fare in modo che le voci degli elenchi a tendina rispettino i colori delle voci originali tabellate, in modo da poter colorare di bianco le parti da non fare vedere nell'elenco a tendina ?

    Grazie ancora !!!

  10. #10
    Uhmmm, mi sembrano entrambe cose impossibili.

    Se provi a digitare qualcosa in una cella vedrai che l'icona del colore del testo viene disabilitata durante la digitazione perché non è possibile inserire testo di colori diversi in una stessa cella ma solo attribuire un colore all'intera cella.

    Per inciso, con la sottolineatura, il grassetto e il corsivo questa regola non vale e non ho mai capito il perché, chissà in cosa differisce, nei meandri di excel, la gestione del colore da quella della sottolineatura, sempre attributi sono. Boh.

    Ed anche per quanto riguarda i valori delle tendine dubito che si possa fare qualcosa. Probabilmente impegnandosi un po' si potrebbero dare diversi colori alle diverse voci, con VBA ovviamente, non certo con la formattazione condizionale, ma sicuramente non si possono dare colori diversi all'interno della stessa voce.

    Quindi direi di cambiare approccio al problema, l'idea di nascondere le informazioni "sgradevoli" non è propriamente il massimo quando si ha a che fare con i DB.

    La prima cosa che mi viene da chiederti è perché non ordini il DB clienti.

    Se ogni cliente ha una sola riga la cosa la fa in automatico excel e andrebbe fatta ogni volta che se ne inserisce uno nuovo, altrimenti bisognerà inventarsi qualcosa di più complesso.

    Puoi postare un record di esempio del DB clienti? Cambiando i nomi e le informazionis sensibili, ovviamente, e senza numeri di telefono o indirizzi mail.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.