Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Ricostruzione, partendo da tabella Pivot, dei dati filtrati Opzioni
aetio
Inviato: Sunday, December 05, 2010 5:12:45 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
mi rendo conto che chiederò una cosa assai complicata, al limite del fattibile... ma penso che ormai tutti i frequentatori del Forum abbiano ben capito che qui siamo in una specie di Paradiso del VBA... per cui sarebbe un peccato mortale il "non osare", sopra tutto perché rimango di volta in volta affascinato dalla eccelsa bravura di a10n11. Ma vengo al sodo, non vorrei assolutamente essere scambiato per un mieloso adulatore, bensì per un estasiato appassionato della materia!!
Partendo dal solito file-prova:
nel foglio TabPivot nelle colonne da E a Q e da V a AH sono elencati dei valori, corripondenti al numero di righe riscontrate durante i confronti tra le TABELLA1 e TABELLA2 di Foglio2. Esempio: in TabPivot nella 2^ tabella di sinistra, riga 446-col.L, è scritto 2 che è il risultato delle righe riscontrate filtrando in Foglio2 in TABELLA1- col.4 il cod. 78 e in TABELLA2- col.15 il cod.33.
E' possibile, ovviamente con una macro, selezionando una data cella nel foglio TabPivot (nel nostro caso la cella L446) fare lavorare Excel in modo che in Foglio2 effettui il lavoro di filtro dei due parametri, ovvero in modo che andando in Foglio2 si trovi la tabella con i dati filtrati come nella foto sottostante?



Grazie infinite, saluti
eZio











Sponsor
Inviato: Sunday, December 05, 2010 5:12:45 PM

 
a10n11
Inviato: Monday, December 06, 2010 10:27:28 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
quello che chiedi è di utilizzare i riferimenti della selezione nel foglio TabPivot come criteri di filtro nel foglio2
vedi se questa che segue, integrata nella macro "CercaSorgente" debitamente modificata esegue quanto chiesto.
Nota: Il select Case di Riga
prevede che la prima tabella pivot parta da riga 4 e finisca a riga 999, che la seconda parta da 1000 e arrivi a 1999 ecc. quindi cambia i riferimenti secondo le tue tabelle originali


Code:

Sub CercaSorgente()
With Sheets("TabPivot")
Riga = ActiveCell.Row
Select Case Riga
Case 4 To 999
Tab1 = 5
Case 1000 To 1999
Tab1 = 1001
Case 2000 To 2999
Tab1 = 2001
Case 3000 To 3999
Tab1 = 3001
Case 4000 To 4999
Tab1 = 4001
End Select
col = ActiveCell.Column
Select Case col
Case 5 To 17
Y = 2
z = 4
Case 22 To 34
Y = 19
z = 21
End Select
Nrtab1 = Cells(Tab1, 5).Value
Nrtab2 = .Cells(6, col).Value
Nr = .Cells(Riga, Y).Value
Comp = .Cells(Riga, z).Value
End With
With Sheets("Foglio2")
Set area = .Range("C2", .Range("G2").End(xlDown))
For Each cl In area
If cl.Value = Nr And Comp = .Cells(cl.Row, Nrtab2).Value Then
CellRif = .Cells(cl.Row, Nrtab2).Address
MsgBox ("Il Valore selezionato è riferito" & vbCrLf _
& "alla Cella   " & CellRif & " del Foglio2 ")
Exit For
End If
Next
End With
Sheets("foglio2").Select
If ActiveSheet.FilterMode = True Then
Selection.AutoFilter
End If
Range("C1:AH1").Select
Selection.AutoFilter
    Selection.AutoFilter Field:=Nrtab1, Criteria1:=Nr
    Selection.AutoFilter Field:=Nrtab2 - 2, Criteria1:=Comp
End Sub


saluti
Giap

aetio
Inviato: Monday, December 06, 2010 11:39:22 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
credetemi: NON HO PAROLE... sono letteralmente basito. Con le debite modifiche la macro funziona perfettamente!!
E' sorprendente l'essenzialità e la precisione delle istruzioni. Complimenti dal profondo del cuore.
Grazie infinite, buona giornata
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.