Importare in un Foglio Elenco Nomi da un altro Foglio solo se hanno valore "SI"

Anonimo
2016-07-04T16:52:20+00:00

Buon Giorno a Tutti

non riesco a trovare la formula che mi permetta di prelevare i Nomi da un Elenco Nomi nel Foglio1  e trascriverli nel Foglio2 ....solo se la condizione e'  "SI"    mi spiego ...

Nel Foglio1     cella  A1  "SI"  oppure  "NO"    cella    B1   "Pippo"

                                  A2  "SI"    """"      "NO"     """      B2   "Topolino" 

                                  A3    """    """       """"       """       B3   "Minny"   ........ eccetera fino a  A1500  ,   B1500

L'elenco nel Foglio1  e' ordinato in ordine alfabetico  A-Z  e di conseguenza nel Foglio2 dovra' essere equivalente 

Pensavo di utilizzare =cerca.vert(              ... ma mi sono incasinato ...perche' non riesco a dare univocita'  ai nomi

........................ una dritta e' bene accetta   GRAZIE     Claudio P

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-07-04T20:15:51+00:00

Ciao Claudio,

In alternativa, potrei postare una routine VBA da assegnare ad un pulsante.

Prova qualcosa del genere:

  • Alt+F11 per aprire l'editor di VBA
  • Menù | Inserisci | Modulo (oppure Alt+IM) per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim WB As Workbook

    Dim srcSH As Worksheet, destSH As Worksheet

    Dim srcRng As Range, destRng As Range, critRng As Range

    Dim vArrIn As Variant, vArrOut() As Variant

    Dim vArrKeys As Variant

    Dim oDic As Object

    Dim sStr As String

    Dim i As Long

    Dim LRow As Long

    Const sPrimoFoglio As String = "Foglio1"              '<<=== Modifica

    Const sSecondoFoglio As String = "Foglio2"          '<<=== Modifica

    Const iRigaIntestazioni As Long = 4 '<<=== Modifica

    Const sCellaCriterio As String = "D2"                     '<<=== Modifica

    Const sPrimaCellaReport As String = "A1"              '<<=== Modifica

    Const sIntestazione As String = _

                              "Nomi Univoci "                          '<<=== Modifica

    Set WB = ThisWorkbook

    With WB

        Set srcSH = WB.Sheets(sPrimoFoglio)

        Set destSH = WB.Sheets(sSecondoFoglio)

    End With

    With srcSH

        LRow = LastRow(srcSH, .Columns("A:A"))

        Set srcRng = .Range("A" & iRigaIntestazioni + 1 & ":B" & LRow)

        Set critRng = .Range(sCellaCriterio)

    End With

    Set destRng = destSH.Range(sPrimaCellaReport)

    vArrIn = srcRng.Value

    Set oDic = CreateObject("Scripting.Dictionary")

    With oDic

        .CompareMode = 0

        For i = LBound(vArrIn) To UBound(vArrIn)

            sStr = critRng.Value

            If UCase(vArrIn(i, 1)) = UCase(critRng.Value) Then

                If Not .exists(sStr) Then

                    .Add Key:=vArrIn(i, 2), Item:=vbNullString

                End If

            End If

        Next i

        vArrKeys = Application.Transpose(SortedList(.keys))

        destRng.Offset(1).Resize(.Count).Value = vArrKeys

        destRng.Cells(1).Value = sIntestazione

    End With

End Sub

'--------->>

Public Function SortedList(V As Variant)

    Dim oSortedList As Object

    Dim arrOut() As Variant

    Dim sStr As String

    Dim i As Long

    Set oSortedList = CreateObject("System.Collections.Sortedlist")

    With oSortedList

        For i = LBound(V) To UBound(V)

            sStr = V(i)    ', 1)

            If Not sStr = vbNullString Then

                If Not .ContainsKey(sStr) Then

                    .Add Key:=sStr, Value:=i

                End If

            End If

        Next i

        ReDim arrOut(1 To .Count)

        For i = 0 To .Count - 1

            arrOut(i + 1) = .GetKey(i)

        Next i

    End With

    SortedList = arrOut

End Function

'--------->>

Public Function LastRow(SH As Worksheet, _

                        Optional Rng As Range, _

                        Optional minRow As Long = 1)

    If Rng Is Nothing Then

        Set Rng = SH.Cells

    End If

    On Error Resume Next

    LastRow = Rng.Find(What:="*", _

                       after:=Rng.Cells(1), _

                       Lookat:=xlPart, _

                       LookIn:=xlFormulas, _

                       SearchOrder:=xlByRows, _

                       SearchDirection:=xlPrevious, _

                       MatchCase:=False).Row

    On Error GoTo 0

    If LastRow < minRow Then

        LastRow = minRow

    End If

End Function

'<<=========

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Salva il file con l’estensione xlsm
  • Alt+F8 per aprire  la finestra di gestione delle macro
  • Seleziona Tester | Esegui

Potresti scaricare il mio file di prova Claudio20160703.xlsm a:

https://www.dropbox.com/s/mmxsc0smn4e4zk1/Claudio20160703.xlsm?dl=0

===

Regards,

Norman

![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=fc0d955a-a0e8-4df3-b3f0-22ec7ca1e395)

La risposta è stata utile?

0 commenti Nessun commento

32 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-07-07T11:57:46+00:00

    Ciao Claudio,

    ....purtroppo i dati dell'anagrafica non li inserisco io , i nominativi doppi (tutto uguale ...) , ...teoricamente non dovrebbero esserci , comunque per sicurezza , nella tabella (il Foglio dove viene inserita la condizione SI/NO ..!!) dove vengono inseriti i nuovi iscritti (aggiunti a quelli gia' esistenti) , pensavo di inserire una formattazione condizionale ,magari con un confronta in maniera che se vengono inseriti due volte dati identici vengano evidenziati in rosso .

    Il codice fiscale "dovrebbe"  essere sempre presente ...dovrebbe ...ma in molti casi non e' stato inserito .....e per chi inserisce i dati e' un ulteriore Peso ...perche' deve digitare una marea di dati .

    Quello del codice Fiscale per l'inseritore e' uno dei pesi che vorrei togliergli .... ho adattato un programmino trovato in rete che genera un C.F  alla volta in maniera che ,Tramite UserForm ,mano a mano che inserisce i dati (nome,cognome,data,luogo di nascita e sesso ) inserisce automaticamente nella cella deputata il C.F  ....funziona..

    Credo che le condizioni da soddisfare che mi hai indicato nel post siano piu' che sufficenti  e non serve un elenco dei nominativi  doppi .

    Quindi, credo che non resti che confermare che il codice si comporti nel modo desiderato con i tuoi dati.

    ===

    Regards,

    Norman

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=54c3a45f-5065-4baa-9746-9d2b1acc9031)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-07T11:49:26+00:00

    Ciao Fratello,

    > Il codice fiscale "dovrebbe"  essere sempre presente ...dovrebbe ...ma in molti casi non e' stato inserito .....e per chi

    > inserisce i dati e' un ulteriore Peso ...perche' deve digitare una marea di dati .

    >

    Domanda mia (a tutti). Perché non fate un controllo quando l'utente inserisce un nuovo iscritto controllando se già presente? Stessa cosa per il codice fiscale: se la cella è vuota non ti faccio uscire ...... o ti cancello la riga.... ;-)

    Non  ho seguito tutto, eh! 

    Io non lo posso fare perchè devo creare un report da un database storico  creato da terzi e credo che Claudio abbia lo stesso problema. Certo che si possa creare controlli per evitare che dati inportanti siano  trascurati ma sarebbe fuori l'ambito dell'oggetto di questo thread. Magari tu abbia dato Claudio un'idea interressante per il suo prossimo thread!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-07T09:32:16+00:00

    > Il codice fiscale "dovrebbe"  essere sempre presente ...dovrebbe ...ma in molti casi non e' stato inserito .....e per chi

    > inserisce i dati e' un ulteriore Peso ...perche' deve digitare una marea di dati .

    >

    Domanda mia (a tutti). Perché non fate un controllo quando l'utente inserisce un nuovo iscritto controllando se già presente? Stessa cosa per il codice fiscale: se la cella è vuota non ti faccio uscire ...... o ti cancello la riga.... ;-)

    Non  ho seguito tutto, eh!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-07-07T09:30:11+00:00

    ciao

    l'avevo capito ..... pero'  siccome hai ragione e' giusto che sia stato evidenziato ,cosi' chi aiuta (e lo fa' GRATIS !!) non deve perdere tempo e mendicare ulteriori informazioni  .

    Grazie   Ciao  Claudio P

    La risposta è stata utile?

    0 commenti Nessun commento