› Excel e gli applicativi Microsoft Office › Elenco con cella di suggerimento ricerca
-
AutoreArticoli
-
Se in un foglio Excel dispongo di un elenco prodotti, e in un altro di un campo per la ricerca veloce di un prodotto per recuperare unità di misura e prezzo unitario (cella B2 foglio Ricerca nel file allegato), sarebbe possibile avere un menu a tendina dove magari l'utente inizia a scrivere qualche lettera del prodotto ricercato e automaticamente vengono mostrati i risultati selezionati che contengono le lettere digitate? Questo per evitare di andare a sfogliare ogni volta l'elenco.Per fare una ricerca più veloce.
Allegati:
You must be logged in to view attached files.Buongiornosi deve utilizzare una colonna di servizio (ho usato la H del foglio ricerca) in H2 da trascinare in basso=SE.ERRORE(INDICE('elenco prodotti'!$B$2:$B$494;AGGREGA(15;6;(RIF.RIGA($B$2:$B$494)/(RICERCA($B$2;'elenco prodotti'!$B$2:$B$494)>0))-RIF.RIGA($B$2)+1;RIF.RIGA($A1)));"")poi in convalida dati della cella b2 in ELENCO nella barra della formula incolla=SCARTO($H$2;;;MATR.SOMMA.PRODOTTO(--($H$2:$H$494<>"")))sempre nella convalida nella scheda messaggio di errore togli la spunta a "mostra messaggio di errore quando i dati immessi non sono validi"con questa procedura in convalida dati otterrai tutte le stringhe dell'elenco che contengono le lettere digitate in B2Allegati:
You must be logged in to view attached files.Si funziona ottimamente sulla cella B2.Ma se io volessi avere poi nel foglio altri campi di ricerca che dovrebbero comportarsi in maniera autonoma? Cioè, nel file ho aggiunto sotto a B2, altre celle con lo stesso campo di ricerca, che vorrei agissero su un db nuovo e completo, invece restano attaccate a quello vecchio eventualmente modificato sulla base della scelta prodotto.Allegati:
You must be logged in to view attached files.Ciaosinceramente non ho capito io non vedo altri elenchi....se devi fare altre convalide che puntano ad altri elenchi ci vogliono1 gli elenchi2 ripetere la stessa procedura per ogni elencooppure fa un esempio praticoSi, forse mi sono spiegato male.Nel file in revisione 2 che ho allegato al messaggio precedente, avevo aggiunto in B3, B4, B5, ad esempio, altre celle di convalida che però puntano allo stesso elenco.L'ho fatto perché magari ho bisogno in diversi punti del foglio di più celle di convalida dove dovrò andare a selezionare prodotti diversi ma dallo stesso elencoCiao se puntano allo stesso elenco bisogna fare altre colonne di servizio con criteri di estrazione diversi esempio vuoi estrarre tutti quelli che finiscono in A? o E? oppure ....lo sai tu.... fa un esempio e ci si provaNo, più che altro mi servirebbe sempre lo stesso elenco con lo stesso criterio di selezione. Per intenderci, la cosa mi serviva per andare a definire i materiali che ho usato in un giorno di lavoro. Quindi ho ipotizzato di usare quei 4-5 campi per definire quelle 4-5 tipologie di materiale che posso usare in una giornata.Quindi quello è l'elenco dei prodotti disponibili, come criterio di selezione mi va benissimo, mi serve solo farlo ripetere in più celleCiaodici che ti serve lo stesso elenco con lo stesso criterio ....quindi ce l'hai.... non capisco cosa vuoi fare.... in attesa di un esempio concreto (tipo digito x voglio ottenere in convalida y).....buona giornataIl mio problema (sull'ultimo file allegato rev 2 c'è già) è questo: se ad esempio in B2 faccio una selezione di un prodotto (facendo una selezione anche sull'elenco chiaramente), vorrei poi in B3 ritornare a disporre dell'elenco per intero, e invece posso solo fare una ricerca nell'elenco ridotto precedentemente.Spero di esser stato più chiaro.Ciao ora siPer fare quello che chiedi ci vogliono tante colonne di servizio quante sono le convalide(magari vengo smentito) oppure forse passare per VBA e li non saprei dove mettere le manipuoi provare cosi,se ho capito, ti posto il codice inserito nel foglio "ricerca" è ti allego anche il file, prova e fai sapere
Option Explicit Private Sub ComboBox1_LostFocus() Dim finalrow As Long finalrow = Cells(Rows.Count, 2).End(xlUp).Row Cells(finalrow + 1, 2) = ComboBox1.Value Cells(finalrow + 1, 2).Activate ActiveCell.Offset(0, 1) = Application.WorksheetFunction.VLookup(ActiveCell.Value, ActiveWorkbook.Names.Item("listino").RefersToRange, 4) ActiveCell.Offset(0, 2) = Application.WorksheetFunction.VLookup(ActiveCell.Value, ActiveWorkbook.Names.Item("listino").RefersToRange, 3) End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing)Allegati:
You must be logged in to view attached files.Albatros54, grande, siamo sulla buona strada, ma dobbiamo correggere il tiro.Ho visto che la macro che hai creato, mi inserisce in coda il nuovo codice di prodotto che posso selezionare dall'elenco a discesa, e poi magari mi posso agganciare l'unità di misura e il prezzo.Innanzitutto ti ho cambiato subito il file di appoggio, ho visto che la cosa stava diventando più complicata e che sarebbe stato per me complicato effettuare il trapianto all'interno del file definitivo, e quindi te l'ho allegato subito.Allora, io vorrei ripetere quello che succede nella cella in verde (B2) in tutte le altre celle giornaliere della colonna B (poi farlo per ogni mese me lo faccio io da solo), troverai aperto direttamente il foglio di Gennaio.In B2 succede questo: basandosi sull'elenco completo in giallo, io in B2 posso iniziare a digitare qualche lettera (per esempio devo cercare i prodotti contenenti la parola "angolare", inizio a digitare "angol") e provo a schiacciare sulla freccia in basso dell'elenco a discesa, vedo che la selezione disponibile è quella contenente i soli prodotti che contengono la parola angolare (e quindi aiuto chi deve registrare il prodotto a farlo più velocemente). Questo accade perché intanto si trasforma l'elenco nella colonna in rosso, che contiene appunto una selezione dei prodotti contenenti le lettere digitate.una volta che ho trovato il mio prodotto e l'ho selezionato, passo alla cella B3, e vorrei rifare la stessa cosa.Il problema è che l'elenco in rosso mi rimane sulla precedente selezione, e quindi la voce disponibile è solo quella che ho selezionato nella cella appena sopra. E' come se dovessi aggiungere il dettaglio che una volta che ho selezionato un prodotto, l'elenco in rosso ritorna ad essere completo, in modo tale da avere a disposizione sempre l'intera scelta.Allegati:
You must be logged in to view attached files.Allora, seguendo la tua strada non mi conduce in nessun posto.
Ti allego il file con le mie modifiche, tu non devi fare altro che selezionare la voce che ti interessa dalla combobox, poi ti porti sulla cella dove vuoi che il dato selezionato venga incollato,naturalmente la colonna sara la "B",e faiclick con il mouse,il dato sara incolato nella cella è nello stesso tempo verranno inseriti i dati nelle altre celle, ti ho bloccato la riga "1", in modo da vare sempre in primo piano la combobox.
albatros54Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing)Allegati:
You must be logged in to view attached files.Va benissimo uguale, non ho capito come funziona, credo sia abbastanza complicata per me, però ti chiederei:- se eseguo l'INCOLLA in una cella della colonna B, l'unità di misura me la prende bene, mentre mi copia il prezzo nella colonna QUANTITA', quando invece me lo deve copiare in PREZZO UNITARIO- nella combobox, piuttosto che farmi vedere il codice prodotto, non posso vedere la descrizione? che è più facile qualora non conosca il codice prodotto, visualizzare una descrizione più estesa da scegliere- una volta scelto il prodotto della Combobox, potrei effettuare in qualunque altra cella del foglio l'operazione di Incolla. Non è possibile a forzare questa operazione solo sulle celle della colonna B? chiaramente vorrei lasciare tutte le altre celle editabili, però solo l'operazione dell'Incolla vorrei che fosse fatta solo sulle celle della colonna B- l'altra cosa importante è questa: non potrei iniziare a digitare qualche lettera in una cella della colonna B, in modo tale che l'elenco viene già in parte ridotto con i soli prodotti che mi interessano e che contengono quelle lettere? in modo tale da effettuare una scelta più guidata e veloce?Per risponderti alla prima , seconda e terza domanda, sostituisci il codice che si trova nell'editor VBA del foglio"gennaio", con quello che ti posto.
per quanto riguarda l'ultima domanda è no, che io sappia, in questo scenarioPrivate Sub ComboBox1_LostFocus() Dim finalrow As Long Set rng = Range("n2:p493") cella = ActiveCell.Address(False, False) If Not Intersect(ActiveCell, Range("B:B")) Is Nothing Then Range(cella) = ComboBox1.Value Range(cella).Activate ActiveCell.Offset(0, 1) = Application.WorksheetFunction.VLookup(ActiveCell.Value, rng, 3) ActiveCell.Offset(0, 3) = Application.WorksheetFunction.VLookup(ActiveCell.Value, rng, 2) End If End Sub Private Sub Worksheet_Activate() ComboBox1.ListFillRange = "GENNAIO!n2:n493" End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing)Mi sembra che funzioni tutto a meno di questo:- ok per la ricerca guidata, cioè iniziare a digitare qualche tasto per iniziare a ridurre il DB di ricerca- il problema è che nella combobox vedo sempre i codice prodotto, e non la descrizioneMi sembra che funzioni tutto a meno di questo:- ok per la ricerca guidata, cioè iniziare a digitare qualche tasto per iniziare a ridurre il DB di ricerca- il problema è che nella combobox vedo sempre i codice prodotto, e non la descrizione.Potrebbe c'entrar qualcosa il fatto che quando salvo il nuovo codice, mi ritorna sul file Excel dicendomi che ci sono delle parti che non possono essere rimosse tramite Controllo documento?Se hai sostituito il codice con quello postato precedentemente, il tutto deve funzionare
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing)Ti confermo che ho provato a riscaricare il tuo ultimo file modificato, e a sostituirci all'interno il nuovo testo. Ma mi dà sempre lo stesso problema. Ma a te non ti esce il messaggio di Controllo documento?Ti allego comunque il file, affinché tu possa verificare che non ci sia un problema da qualche altra parte.Allegati:
You must be logged in to view attached files.Ti confermo che ho provato a riscaricare il tuo ultimo file modificato, e a sostituirci all'interno il nuovo testo. Ma mi dà sempre lo stesso problema. Ma a te non ti esce il messaggio di Controllo documento?Ti allego comunque il file, affinché tu possa verificare che non ci sia un problema da qualche altra parte.Allegati:
You must be logged in to view attached files.Vai nell'editor VBA, click su "ThisWorkbook" lo apri e nella finestra del modulo incolli il codice sotto
Private Sub Workbook_Open() Sheets("GENNAIO").ComboBox1.ListFillRange = "GENNAIO!n2:n493" End SubPer quanto riguarda"Controllo Documento",nel mio caso Excel2007", vai sul pulsante in alto a DX della finestra principale, si apre il menu e in basso a sx click sul pulsante"OpzionidiExcel"apri e vai sul menu"Centro Protezione"
click su "Impostazione centro di protezione" apri il menu a sx"Opzioni Privacy"e levi la spunta alla casella"Rimuovi le informazioni personali....." esci e salva il file.
Ti allego il file
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing)Allegati:
You must be logged in to view attached files.Perfetto, ora va tutto bene.Si potrebbe allargare la combobox? giusto per farci entrare testi più lunghi?E come si fa a ricopiare la combobox negli altri fogli? Ho copiato il testo di programmazione anche negli altri fogli, ma la combobox non compareSeguimi perchè ci sono dei passaggi da fare:le combobox le devi inserire tu nei vari fogli, portati sul foglio dove devi inserire la combobx, apri il menu "Sviluppo",menu "controlli"e vai su "inserisci", si apre un men a tendina, sleziona la combobox dal menu "Controlli Activex",incolla la combobox sul foglio.Tasto Dx del mouse e fai click sulla combobox che hai inserita, si apre il menu e selezioni"proprieta", nella casella Name cambia il nome inCombobox2, in questo caso, per gli altri foglio naturalmente saranno 3,4 ...n.a questo punto abbiamo inserito la nostra combobx con il suo numero.Vai in VBa Editor e nel foglio"ThisWorkbook" inserisci il codice che ti posto sotto[pastacode lang="markup" manual="Private%20Sub%20Workbook_Open()%0ASheets(%22GENNAIO%22).ComboBox1.ListFillRange%20%3D%20%22GENNAIO!n2%3An493%22%0AEnd%20Sub%0A" message="" highlight="" provider="manual"/]
nel foglio"Gennaio" inserisic il codice sotto
[pastacode lang="markup" manual="Private%20Sub%20ComboBox1_LostFocus()%0A%20%20%20Dim%20finalrow%20As%20Long%0A%20%20%20%20Set%20rng%20%3D%20Range(%22n2%3Ap493%22)%0A%20%20%20%20cella%20%3D%20ActiveCell.Address(False%2C%20False)%0A%20%20%20%20If%20Not%20Intersect(ActiveCell%2C%20Range(%22B%3AB%22))%20Is%20Nothing%20Then%0A%20%20%20%20%20%20%20%20Range(cella)%20%3D%20ActiveSheet.OLEObjects(%22ComboBox1%22).Object.Value%0A%20%20%20%20%20%20%20%20Range(cella).Activate%0A%20%20%20%20%20%20%20%20ActiveCell.Offset(0%2C%201)%20%3D%20Application.WorksheetFunction.VLookup(ActiveCell.Value%2C%20rng%2C%203)%0A%20%20%20%20%20%20%20%20ActiveCell.Offset(0%2C%203)%20%3D%20Application.WorksheetFunction.VLookup(ActiveCell.Value%2C%20rng%2C%202)%0A%20%20%20%20End%20If%0AEnd%20Sub" message="" highlight="" provider="manual"/]
nel foglio"febbraio" inserisci il codice sotto
[pastacode lang="markup" manual="Private%20Sub%20ComboBox2_LostFocus()%0A%20%20%20Dim%20finalrow%20As%20Long%0A%20%20%20%20Set%20rng%20%3D%20Sheets(%22GENNAIO%22).Range(%22n2%3Ap493%22)%0A%20%20%20%20cella%20%3D%20ActiveCell.Address(False%2C%20False)%0A%20%20%20%20If%20Not%20Intersect(ActiveCell%2C%20Range(%22B%3AB%22))%20Is%20Nothing%20Then%0A%20%20%20%20%20%20%20%20Range(cella)%20%3D%20ActiveSheet.OLEObjects(%22ComboBox2%22).Object.Value%0A%20%20%20%20%20%20%20%20Range(cella).Activate%0A%20%20%20%20%20%20%20%20ActiveCell.Offset(0%2C%201)%20%3D%20Application.WorksheetFunction.VLookup(ActiveCell.Value%2C%20rng%2C%203)%0A%20%20%20%20%20%20%20%20ActiveCell.Offset(0%2C%203)%20%3D%20Application.WorksheetFunction.VLookup(ActiveCell.Value%2C%20rng%2C%202)%0A%20%20%20%20End%20If%0AEnd%20Sub%0A%0APrivate%20Sub%20Worksheet_Activate()%0ASet%20dati%20%3D%20ThisWorkbook.Sheets(%22GENNAIO%22).Range(%22n2%3An493%22)%0Acaricabis%20%3D%20dati%0AActiveSheet.OLEObjects(%22ComboBox2%22).Object.List%20%3D%20caricabis%0AEnd%20Sub" message="" highlight="6" provider="manual"/]
fai attenzione a inserire il nome giusto della combobox.
Questa procedura che ti ho mostrato la devi fare per tutti i fogli, ricordandoti di rinominare le varie combobx
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?
( Alan Turing) -
AutoreArticoli
