Moderatori: Anthony47, Flash30005
dottbarbi ha scritto:Grazie!
Hai capito perfettamente quello che avevo bisogno di fare, cioè scegliere alternativamente o selezionando un codice o una descrizione.
Ora non mi resta che riuscire ad implementarla all'interno del mio foglio nella formula di ricerca (SPERIAMO BENE).
Ciao
Sub MacroelencoA()
nega = 1
Ur = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For i = 26 To Ur
If Worksheets("Foglio2").Range("A1").Value = Worksheets("Foglio1").Range("A" & i).Value Then Worksheets("Foglio2").Range("B1").Value = Worksheets("Foglio1").Range("B" & i).Value
Next i
End Sub
Sub MacroelencoB()
nega = 1
Ur = Worksheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
For i = 26 To Ur
If Worksheets("Foglio2").Range("B1").Value = Worksheets("Foglio1").Range("B" & i).Value Then Worksheets("Foglio2").Range("A1").Value = Worksheets("Foglio1").Range("A" & i).Value
Next i
End Sub
=Se(E'_presente_il_codice_inputato;prendi_la_cella_col_codice_inputato;cerca.vert(La_descrizione;tabella_anagrafica;1;0))
=Se(E'_presente_il_codice_inputato;Cerca.vert(Il_Codice;Tabella_anagrafica;2;0);La_Descrizione_inputata)
Anthony47 ha scritto:Scusate, non ho seguito questa discussione e faccio fatica a ricostruire.
Se la richiesta e' di avere sul secondo foglio due colonne, la prima convalidata da elenco=codici e la seconda da elenco=descrizione, volendo pero' contemporaneamente avere nella cella una formula che dato il codice estrae la descrizione oppure data la descrizione estrae il codice, beh allora la presenza di una formula nella cella e' incompatibile con la presenza di un dato digitato (o scelto da elenco), nel senso che appena scrivo in cella la formula va a farsi benedire per sempre, salvo che non la ripristini con una macro di tipo Worksheet_Change: un change in col 1 ripristina la formula in colonna 2, e viceversa.
In alternativa, ti fai due colonne di servizio per inputare a scelta il codice o la descrizione, ambedue soggette a convalida da elenco, e poi ti ricostruisci nelle colone adiacenti i risultati: per il codice
- Codice: Seleziona tutto
=Se(E'_presente_il_codice_inputato;prendi_la_cella_col_codice_inputato;cerca.vert(La_descrizione;tabella_anagrafica;1;0))
Per la descrizione sara' una formula complementare, ma dando la priorita' al codice, cioe'
- Codice: Seleziona tutto
=Se(E'_presente_il_codice_inputato;Cerca.vert(Il_Codice;Tabella_anagrafica;2;0);La_Descrizione_inputata)
Ciao.
Anthony47 ha scritto:Ma devo per forza leggere tutto per capire quale era l' obiettivo?
Ciao.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B26:C47")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Column = 2 Then
Target.Offset(0, 1).Value = _
Sheets("Listino").Range("Descrizione").Range("A1").Offset(Application.WorksheetFunction.Match(Target, Sheets("Listino").Range("Codice"), 0) - 1, 0)
Else
Target.Offset(0, -1).Value = _
Sheets("Listino").Range("Codice").Range("A1").Offset(Application.WorksheetFunction.Match(Target, Sheets("Listino").Range("Descrizione"), 0) - 1, 0)
End If
Application.EnableEvents = True
End Sub
Anthony47 ha scritto:La macro fa quello che ho capito era la richiesta, come descritto nel post precedente.
Ovviamente mantiene la convalida, se inserita.
Ciao.
dottbarbi ha scritto:Penso di aver compreso la formula ma quando ho provato ad implementarla non ha funzionato, forse perché ho delle celle unite e l'immissione è intervallata (non l'avevo detto ma era per non rendere problematico il tutto..)
Il Codice viene inserito dalla riga 26 alla 46 ma la colonna di riferimento è l'unione delle colonne da H ad O.
La Descrizione è nelle corrispondenti righe dalla 26 alla 46 e la colonna di riferimento è l'unione delle colonne da P ad AZ.
Questa pagina di immissione è poi replicata altre due volte per un totale di 3 pagine, quindi le immissioni avvengono nelle righe:
- dalla 26 alla 46; quindi il Range è ("H26:AZ46") (Colonne Codice+Colonne Descrizione di Pagina 1)
- dalla 84 alla 104; quindi il Range è ("H84:AZ104") (Colonne Codice+Colonne Descrizione di Pagina 2)
- dalla 142 alla 162; quindi il Range è ("H142:AZ162") (Colonne Codice+Colonne Descrizione di Pagina 3)
Cosa che consiglio di evitare, la prossima volta...Il foglio che ho realizzato è sia foglio di calcolo che in un qualche senso formato di stampa.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B26:P47")) Is Nothing Then Exit Sub
On Error GoTo ExitA
Application.EnableEvents = False
If Target.Column = 8 Then
Target.Offset(0, 1).Value = _
Sheets("Listino").Range("Descrizione").Range("A1").Offset(Application.WorksheetFunction.Match(Target, Sheets("Listino").Range("Codice"), 0) - 1, 0)
Else
Target.Offset(0, -8).Value = _
Sheets("Listino").Range("Codice").Range("A1").Offset(Application.WorksheetFunction.Match(Target, Sheets("Listino").Range("Descrizione"), 0) - 1, 0)
End If
ExitA:
Application.EnableEvents = True
End Sub
Torna a Applicazioni Office Windows
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Inserire add.in nella barra di avvio veloce in excel 2003 Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Excel: problema con date se devo unirle a testi Autore: valle1975 |
Forum: Applicazioni Office Windows Risposte: 5 |
Visitano il forum: Nessuno e 6 ospiti