| | Post: 220 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
25/02/2018 22:16 | |
Buona sera,
vorrei usare i valori presenti nella colonna da C2 in poi e creare un elenco con convalida dati in D2 del foglio2.
Nello stesso foglio ci sarei arrivato cosi (post modifica di vecchio thread di Giuseppe MN ->che ringrazio):
Option Explicit
Private Sub Worksheet()
Application.EnableEvents = False
On Error GoTo 10
Dim URiga As Long, x As Long
Dim Rec As String
URiga = Range("C" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("C1:C" & URiga)) Is Nothing Then
Application.ScreenUpdating = False
URiga = Range("C" & Rows.Count).End(xlUp).Row
Columns("C:C").Copy Range("D1")
ActiveSheet.Range("$D$1:$D$" & URiga).RemoveDuplicates Columns:=1, Header:=xlNo
End If
URiga = Range("D" & Rows.Count).End(xlUp).Row
For x = 1 To URiga
Rec = Rec & Range("D" & x) & ","
Next x
Rec = Left(Rec, Len(Rec) - 1)
Columns(4).ClearContents
Range("D2").Select 'cella dove creo elenco convalida dati
With Selection.Validation ' script per creare elenco
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Rec
End With
10:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Grazie per l'aiuto. [Modificato da BG66 25/02/2018 22:22] BG66
Excel 2010 |
|
| | Post: 2.703 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/02/2018 23:11 | |
Buona sera, BG66;
in attesa di soluzioni più professionali potresti provare con:
in Microsoft Exxcel Oggetti (Foglio1)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim URiga As Long
URiga = Range("C" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("C1:C" & URiga)) Is Nothing Then Call Test
End Sub
in un Modulo
Option Explicit
Sub Test()
Application.ScreenUpdating = False
Dim URiga As Long, x As Long
Dim Rec As String
URiga = Range("C" & Rows.Count).End(xlUp).Row
Columns("C:C").Copy Range("D1")
ActiveSheet.Range("$D$1:$D$" & URiga).RemoveDuplicates Columns:=1, Header:=xlNo
URiga = Range("D" & Rows.Count).End(xlUp).Row
For x = 1 To URiga
Rec = Rec & Range("D" & x) & ","
Next x
Rec = Left(Rec, Len(Rec) - 1)
Columns(4).ClearContents
Sheets("Foglio2").Select
With Range("D2").Validation ' script per creare elenco
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Rec
End With
Application.ScreenUpdating = True
End Sub
A disposizione.
Buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 3.191 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
26/02/2018 00:53 | |
Un saluto a GiuseppeMN
Se Ti va bene...
Sembra che nelle convalide non ci possano stare più di 1000 righe
Ex In D2 =SE.ERRORE(INDICE(C$2:C$1000;CONFRONTA(0;INDICE(CONTA.SE($D$1:D1;$C$2:C$1000&""););0));"")
Tracini giù la formula, ora in formule/gestione nomi/nuovo (ex Dati) e in "riferito a"
=SCARTO(Foglio1!$D$2;;;CONTA.SE(Foglio1!$D$2:$D$200;">a*"))
In Foglio2, cella D2 inserisci Convalida Dati/Elenco =Dati
Ps. In scarto ho messo righe 200, prova aumentare se non bastano Excel 2013 |
| | Post: 220 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
26/02/2018 09:30 | |
[RISOLTO]
Entrambe le soluzioni sono ovviamente funzionanti.
Grazie a tutti.
Alla prossima. BG66
Excel 2010 |
| | Post: 2.706 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
26/02/2018 09:50 | |
Buona giornata a BG66; dopo un caro saluto a Raffaele, mi permetto di proporti una soluzione alternativa. In alternativa alla: - Convalida dati potresti considerare l'opportunità di utilizzare ComboBox. Questo, a mio parere, porterebbe a diversi vantaggi: - nel Foglio di lavoro "Foglio1", non ci sarebbe la necessità di utilizzare la Colonna d'appoggio "D"; esecuziione del Codice più veloce - poter selezionare i Record in modo dinamico - non ci sarebbe limite al numero di Record da gestire A disposizione. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
|
|