Risolto Inversione Ricerca con Convalida dati

ClementeSan Felice

Nuovo utente
Original poster
27 Maggio 2026
17
0
1
63
Arienzo
2016
Buon Pomeriggio a tutti
Sono rimasto meravigliato da cosa sono riuscito a fare con il Vostro aiuto
però adesso vorrei porre una domanda:
Ho fatto sì che con "Convalida Dati" riesco ad ottenere un codice da un elenco nella casella corrispondente
mi domando è possibile ottenere sempre sullo stesso foglio la Descrizione del prodotto partendo dal codice?
in effetti dovrebbe essere possibile tutte e due le opzioni
allego comunque il file che ho creato
grazie a tutti
 

Allegati

  • Modello Richiesta MATERIALE - Copia.xlsx
    21,2 KB · Visite: 7

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.741
8.633
2.445
72
Napoli
Office 365
Scusa ma cosa ti serve la convalida per la descrizione quando con un CERCA.VERT() partendo dal codice puoi estrarla in automatico dalla tabella del foglio2 come puoi vedere nell'immagine?

 
Ultima modifica:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.705
6.300
2.345
55
Arce
2016, 2019, 365
Ho fatto si che con "Cnvalida Dati" riesco ad ottenere un codice da un elenco nella casella corrispondente
mi domando è possibile ottenere sempre sullo stesso foglio la Descrizione del prodotto partendo dal codice?
Certo, metti la convalida nella prima colonna e poi con CERCA.VERT ottieni la descrizione.
Ti chiedo due cose:
1. perché usi tutte quelle inutili celle unite
2. quale versione hai realmente? nel profilo dichiari una 2017 che non mi risulta esista.

Ciao.
edit
cosa ti serve la convalida per la descrizione quando con un CERCA.VERT() partendo dal codice puoi estrarla in automatico dalla tabella del foglio2
Perché ora con la convalida recupera la descrizione ed il codice lo ottiene con INDICE+CONFRONTA
 

ClementeSan Felice

Nuovo utente
Original poster
27 Maggio 2026
17
0
1
63
Arienzo
2016
avete ragione ho Office 2016
le celle unite le ho usate per la stampa
più ottimale

ora provo
ma io in A14 ho già una formula

[riuniti i messaggi]​
 
Ultima modifica di un moderatore:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.705
6.300
2.345
55
Arce
2016, 2019, 365
Io ho usato il CERCA.VERT() sul codice in colonna A cosa c'è che non va?
Non so come hai fatto, ma se la colonna A (che in realtà sono A B e C) contiene una formula che punta alla F, come è possibile che ti funzioni senza avere un riferimento circolare?

edit
Gentilmente evitate i messaggi a raffica, sono disponibili 30 minuti per integrarli e/o correggerli, per cui li ho riuniti
 
  • Like
Reactions: ClementeSan Felice

ClementeSan Felice

Nuovo utente
Original poster
27 Maggio 2026
17
0
1
63
Arienzo
2016
appunto penso non sia possibile fare le due cose
cioè
dalla descrizione ricavare il codice
e
dal codice ricavare la descrizione
dei dati in foglio 2!
devo chiudere buoona serata a tutti e grazie ancora a domani
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.705
6.300
2.345
55
Arce
2016, 2019, 365
Ultima modifica:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.705
6.300
2.345
55
Arce
2016, 2019, 365
Il problema sono le celle unite
Nemmeno troppo:
Foglio1:
Sub Worksheet_Change(ByVal Target As Range)
Dim lngRow As Long, strRange As String, lngCol As Long, varVL, rngFrom As Range, rngTo As Range, lngLast As Long, strResult As String

    If Not Intersect(Target, Range("A14:A28", "F14:F28")) Is Nothing Then
        Application.EnableEvents = False
        lngRow = Target.Cells(1, 1).Row
        lngCol = Target.Cells(1, 1).Column
        lngLast = Worksheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row
        If lngCol = 1 Then
            strRange = "F" & lngRow & ":Z" & lngRow
            Set rngFrom = Worksheets("Foglio2").Range("A2:A" & lngLast)
            Set rngTo = Worksheets("Foglio2").Range("B2:B" & lngLast)
        Else
            strRange = "A" & lngRow & ":C" & lngRow
            Set rngFrom = Worksheets("Foglio2").Range("B2:B" & lngLast)
            Set rngTo = Worksheets("Foglio2").Range("A2:A" & lngLast)
        End If
        If Target.Cells(1, 1).Value = "" Then
            Range(strRange).ClearContents
        Else
            varVL = Application.Match(Target.Cells(1, 1).Value, rngFrom, 0)
            If IsError(varVL) Then
                strResult = "non trovato"
            Else
                strResult = Application.Index(rngTo, varVL)
            End If
            Range(strRange).Value = strResult
        End If
        Application.EnableEvents = True
    End If
End Sub
Il codice è solo una traccia, da mettere nel modulo del foglio, come puoi leggere qui:
ed alla variazione di codice o descrizione, aggiorna l'altro, mentre se cancelli la cella li pulisce.
Convalida-Doppia.gif

siamo sempre disponibili a spiegare quello che c'è da spiegare
Certo, basta chiedere e le spiegazioni arrivano sempre,
ciao.
 

ClementeSan Felice

Nuovo utente
Original poster
27 Maggio 2026
17
0
1
63
Arienzo
2016
Buongiorno a tutti
riprendendo il discorso di ieri
Il problema in parte l'abbiamo risolto
però quando vado ad inserire la quantità
vanno via i codici mi dice "non trovato"
E' anche vero che con il VBA non sono pratico e sto seguendo anche delle lezioni cercando su you tube

questo è il file
grazie
 

Allegati

  • Modello Richiesta MATERIALE - Copia.xlsx
    18,4 KB · Visite: 1
Ultima modifica di un moderatore:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.705
6.300
2.345
55
Arce
2016, 2019, 365
E' anche vero che con il VBA non sono pratico
Il file è senza macro, per cui lo rimuovo.
Cortesemente allega quello corretto, ma prima prova questa modifica:
Foglio1:
Sub Worksheet_Change(ByVal Target As Range)
Dim lngRow As Long, strRange As String, lngCol As Long, varVL, rngFrom As Range, rngTo As Range, lngLast As Long, strResult As String

    If Not Intersect(Target, Range("A14:F28")) Is Nothing Then
        lngCol = Target.Cells(1, 1).Column
        If lngCol <> 4 Then
            Application.EnableEvents = False
            lngRow = Target.Cells(1, 1).Row
            lngLast = Worksheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row
            If lngCol = 1 Then
                strRange = "F" & lngRow & ":Z" & lngRow
                Set rngFrom = Worksheets("Foglio2").Range("A2:A" & lngLast)
                Set rngTo = Worksheets("Foglio2").Range("B2:B" & lngLast)
            Else
                strRange = "A" & lngRow & ":C" & lngRow
                Set rngFrom = Worksheets("Foglio2").Range("B2:B" & lngLast)
                Set rngTo = Worksheets("Foglio2").Range("A2:A" & lngLast)
            End If
            If Target.Cells(1, 1).Value = "" Then
                Range(strRange).ClearContents
            Else
                varVL = Application.Match(Target.Cells(1, 1).Value, rngFrom, 0)
                If IsError(varVL) Then
                    strResult = "non trovato"
                Else
                    strResult = Application.Index(rngTo, varVL)
                End If
                Range(strRange).Value = strResult
            End If
            Application.EnableEvents = True
        End If
    End If
End Sub
Intanto sposto nella sezione corretta,
ciao.