poniedziałek, 15 czerwca 2015

Excel: Praca z dwiema "połączonymi" tabelami - burza mózgu

Chcę zasymulować połączenie dwóch tabel. W jednej z zakładek stworzyłem "Raport"  za pomocą MSQuery,

Edytuję jedną tabelę, klikam na kolumnę indeksu, za pomoca którego tabele połączyłem. Chcę by otworzyła się druga tabela z wifiltrowanymi pakietami.


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim id As String

If Intersect(Target, ListObjects("Table1").ListColumns("Nr_umowy").Range) Is Nothing Then Exit Sub

If Not Target.Cells.Count <> 1 Then
    Application.ScreenUpdating = False

    id = CStr(Selection)

    Windows("contracts_two_tables.xlsm:1").Activate
    Sheets("Pakiety").Activate

    ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=1, Criteria1:=id ' , Operator:=xlAnd, Criteria2:="<=" & id4
    Application.ScreenUpdating = True

End If

On Error GoTo ErrorHandling

    Debug.Print Sheets("Pakiety").ListObjects("Table2").ListColumns("Nr_umowy").DataBodyRange.SpecialCells(xlCellTypeVisible).Count

On Error GoTo 0

Exit Sub

ErrorHandling:
    Sheets("Pakiety").Range("A60000").End(xlUp).Offset(1, 0).Formula = "'" & id

End Sub


W trzeciej zakładce mam pivota stworzonego za pomocą MSQuery. Jak go odświeżać? Ostatecznie takie rozwiązanie zadziałało:
Private Sub Worksheet_Activate()
    'ActiveWorkbook.Connections("Query from Excel Files1").ODBCConnection.BackgroundQuery = False
    ActiveWorkbook.Connections("Query from Excel Files1").Refresh
    Sheets("Podsumowanie").PivotTables("PivotTable1").Update
End Sub
 
Dodatkowo, chciałbym widzieć obie tabele obok siebie po włączeniu. 

Private Sub Workbook_Open()
 Sheets("Pakiety").Select
 ActiveWindow.NewWindow
 Sheets("Umowy").Select
 ThisWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
End Sub
Do pierwszego makra dodaję jeszcze Windows("contracts_two_tables.xlsm:1").Activate tak aby kliknięcie w kod powodowało filtrowanie po kodzie w drugim oknie. Plik z rozwiązaniem Brudnopis: Make selection in sheet 1 filter sheet 2 and on edit add an empty row?? Simple solution for data entry: Auto-copy clicked ID to new row in second table. If nothing entered - cleanup? Reporting: Ideas: http://chandoo.org/wp/2012/04/02/using-excel-as-your-database/ or simply MS Query and

Brak komentarzy:

Prześlij komentarz