Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Elenco con convalida dati in foglio diverso

Ultimo Aggiornamento: 26/02/2018 09:50
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
Vota: 15MediaObject5,0035 3
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:38. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com