Cerca valori ed esegui operazione

di il
1 risposte

Cerca valori ed esegui operazione

Ciao,

partendo da una tabella come questa:

http://uploading.com/files/42d6493c/Tabella.jpg

avrei bisogno di un codice che esegua queste operazioni:

1. cerca "Nome2" nella prima colonna (in realtà il valore da cercare non è fisso, varia a seconda del risultato di una funzione, ma poi lo setto io come variabile);

2. trovato "Nome2", cerca sulla stessa riga il valore "x", a partire dalla colonna 4 e fino all'ultima colonna (il conteggio delle colonne andrebbe fatto sulla riga1, dove ci sono le intestazioni di colonna);

3. ogni volta che trova il valore "x" in corrispondenza del "Nome2", rende visibile il foglio della cartella il cui nome corrisponde al valore inserito come intestazione di quella stessa colonna; per es, se avessi cercato "Nome2", la macro dovrebbe rendere visibili il Foglio1 e il Foglio3, perchè le "x" si trovano in corrispondenza delle colonne 4 e 6;

4. la ricerca del valore "x" in orizzontale deve continuare fino all'ultima colonna (il numero di colonne può variare ed è determinato da quante sono le intestazioni di colonna, sempre adiacenti quindi no celle vuote tra una intestazione di colonna e l'altra); ogni volta che trova la "x", scopre il foglio con il nome uguale all'intestazione della colonna dove si trova "x"; quando non trova la "x", non fa niente e passa alla colonna successiva, e così via fino all'ultima colonna.

La macro la inserirei in ThisWorkbook dove c'è anche la funzione che restituisce il valore da cercare (è una funzione che controlla l'utente connesso al computer) e dove c'è il codice che nasconde, di default, i fogli che questa macro dovrebbe poi scoprire in base a dove si trovano le "x".

Spero di essermi spiegato.

Grazie infinite,
Marco.

1 Risposte

  • Re: Cerca valori ed esegui operazione

    Ciao,
    nel caso qualcuno fosse interessato, copio il codice con cui ho risolto:

    Option Explicit
    Sub ScopriFogli()
    Dim NrCol As Long
    Dim ws As Worksheet
    Dim FindString As String
    Dim Rng As Range
    Dim Nm As String, Rw As Long, cell As Range
    Set ws = Worksheets("Foglio1")
    NrCol = Cells(1, ws.Columns.Count).End(xlToLeft).Column
    Nm = "Nome2"
    FindString = Nm
    If Trim(FindString) <> "" Then
    With ws.Range("A:A")
    Set Rng = .Find(What:=FindString, _
    After:=.Cells(.Cells.Count), _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=False)
    If Rng Is Nothing Then
    MsgBox "Nothing found"
    Else
    If Nm = "False" Then Exit Sub
    On Error Resume Next
    Rw = WorksheetFunction.Match(Nm, ws.Range("A:A"), 0)
    On Error GoTo 0
    If Rw = 0 Then
    MsgBox "Name not found"
    Exit Sub
    End If
    For Each cell In Rows(Rw).SpecialCells(xlConstants)
    If cell = "x" Then Sheets(Cells(1, cell.Column).Value).Visible = True
    Next cell
    End If
    End With
    End If
    End Sub
Devi accedere o registrarti per scrivere nel forum
1 risposte