Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [excel] cercare più valori in una tabella

    In un foglio Excel ho una tabella:
    id_regione, id_provincia, nome_provincia

    ossia, ho le provice italiane (ordinate o non). Volevo estrarre tutte le province per una data regione.
    Ho provato con cerca, cerca.verticale, ma non sono riuscito a niente

    Mi dareste una mano?

    Pietro

  2. #2
    Usare i filtri a imbuto?

    o devi avere il risultato in una cella? in questo caso su due piedi mi viene in mente solo il vba...

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da ibernet
    Usare i filtri a imbuto?

    o devi avere il risultato in una cella? in questo caso su due piedi mi viene in mente solo il vba...
    In effetti volevo fare il tutto con vba . Ma oltre a fare la scansione della tabella riga per riga, non so fare altro.
    Pietro

  4. #4
    Se sai fare la scansione riga per riga sei già a buon punto, serve poco di più, per esempio una cosa del genere:

    codice:
    Private Sub CommandButton1_Click()
    
       regione = InputBox("Indica la regione da estrarre")
       riga = 1
       colonna = 5
       
       For Each casella In Range([A1], [A1].End(xlDown))
          If casella = regione Then
             Cells(riga, colonna) = casella.Offset(0, 2)
             riga = riga + 1
          End If
       Next
    
    End Sub
    Non avendo dato informazioni su come fornire l'input e dove ottenere l'output e su come comportarsi con le maiuscole o con gli input errati ho fatto un po' di testa mia.

    L'input ti viene richiesto via inputbox ma si potrebbe anche scrivere in una casella o fornirlo via file o quello che vuoi, idem per l'output che faccio scrivere a partire dalla riga/colonna indicate e proseguendo a scendere.

    Il range di esplorazione va dalla cella A1 fino alla prima casella vuota.

    Le maiuscole non sono gestite quindi Piemonte è diverso da piemonte.

    Se una regione non viene trovata non viene data nessuna segnalazione, semplicemente non viene estratto nulla.

    Come vedi il puntamento alla cella da estrarre viene fatto con un offset, cioè spostandosi di 0 righe e 2 colonne rispotto alla cella in esame, in modo che da id_regione si passi a nome_provincia, mentre il puntamento alla cella in cui scrivere è fatto con un normale puntamento riga/colonna.

    Vedi un po' se come base può andar bene e poi magari lo perfezioniamo.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ti ringrazio. Lo studierò con calma. Ciao
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, ho studiato e provato il codice. Funziona perfettamente!

    codice:
    Public Sub ScansionoProvince()
        Dim regione As Integer
        Dim riga As Integer, colonna As Integer
        Dim casella
        
        'chiedo l'id_regione
        regione = CInt(InputBox("Indica l'id_regione da estrarre"))
        
        'riga-colonna di output
        riga = 5: colonna = 1
            
        'Range([A5], [A5].End(xlDown)).ClearContents
        'Range(Cells(riga, colonna), Cells(riga, colonna).End(xlDown)).ClearContents
        Dim routput As Range: Set routput = Cells(riga, colonna)
        Range(routput, routput.End(xlDown)).ClearContents
        
        For Each casella In Range([Foglio2!E2], [Foglio2!E2].End(xlDown))
            If casella = regione Then
                Cells(riga, colonna) = casella.Offset(0, -2)
                riga = riga + 1
            End If
       
        Next
        
    End Sub
    Ho un problema. Volevo cancellare la zona di output. Come si seleziona la zona da A5 a fine colonne e fine righe?
    Pietro

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ok! ho risolto. Ancora grazie per il tuo codice.
    Pietro

  8. #8
    oh, bene, mi spiace di essere sparito ma sono molto preso al lavoro.
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.