salve
qui si rende necessario riepilogare tutta la questione altrimenti si perde il filo logico.
Generazione Tabelle Pivot da confronto di tutta la tabella1 con tutta la Tabella2
Il lavoro viene eseguito dalla Macro: Sub confronta_Tabelle2() che richiama a sua volta la macro:Sub CreaPivot2()
e viene completata con la macro Sub Per_filtro()
La macro per risalire dalle Tabelle Pivot alla Tabella del Foglio 2 si chiama - Sub CercaSorgente()
Generazione Tabella Pivot che confronta solo la colonna AH con tutta la tabella2
Il lavoro viene eseguito dalla macro: Sub confronta_Tabelle3() che dopo la modifica alla struttura delle Tabelle Pivot per inserirle in aree del foglio ben definite, necessita in questo caso che sia modificata quindi la chiameremo
Sub CreaPivot3() che avrà questo codice:
Code:
Sub CreaPivot3()
Select Case Tab2
Case 1
colp = 3
rtab = Sheets("TabPivot").Range("C65536").End(xlUp).Row + 3
Case 2
colp = 20
rtab = Sheets("TabPivot").Cells(65536, colp).End(xlUp).Row + 3
End Select
Set rng = Cells(1, col).CurrentRegion
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
rng.Address).CreatePivotTable TableDestination:=Sheets("TabPivot").Cells( _
rtab, colp), TableName:="Tabella_pivot" & Pr
Sheets("TabPivot").Select
ActiveSheet.PivotTables("Tabella_pivot" & Pr).SmallGrid = False
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Numero")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Compon.")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Numero")
.Orientation = xlDataField
.Position = 1
End With
ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Somma di Numero"). _
Function = xlCount
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Tab2")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Tab1")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tabella_pivot" & Pr).ColumnGrand = False
ActiveSheet.PivotTables("Tabella_pivot" & Pr).RowGrand = False
Set rng = Nothing
End Sub
Quindi nella macro Sub confronta_Tabelle3() modificheremo la riga "Call CreaPivot2" con
"Call CreaPivot3"
e sa sua volta completata con la macro Sub Per_filtro()
La macro per risalire dalle Tabelle Pivot alla Tabella del Foglio2 si chiamerà per questa seconda ipotesi:
Sub CercaSorgente_AH() che avrà il seguente codice:
Code:
Sub CercaSorgente_AH()
With Sheets("TabPivot")
Riga = ActiveCell.Row
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 = 34
Nrtab2 = .Cells(6, col).Value
Nr = .Cells(Riga, Y).Value
Comp = .Cells(Riga, z).Value
End With
With Sheets("Foglio2")
Set area = .Range("AH2", .Range("AH2").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("A1:AH1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=NrTab1, Criteria1:=Nr
Selection.AutoFilter Field:=Nrtab2, Criteria1:=Comp
End Sub
speriamo di non esserci persi.
saluti
Giap