• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gegevens uit draaitabellen ophalen

Status
Niet open voor verdere reacties.

PITOR

Gebruiker
Lid geworden
20 aug 2015
Berichten
39
Excellenten!

In het meegestuurde voorbeeld probeer ik uit 7 draaitabelletjes gegevens op te halen op basis van de naam van een groep en op groepslidnaam.
Tot nu toe doe ik dat door in de doelcel "=" te tikken en dan met de cursor alle plekken waar bijvoorbeeld de groepsnaam "Damstra" wordt weergegeven aan te klikken, een "+" toe te voegen en de volgende plek ann te klikken waarin de naam "Damstra"voorkomt.
Dat geeft een groot risico op fouten. Kan dat anders, met name geautomatiseerd met een formule?

Alle namen in het voorbeeld zijn gefigneerd. Eventuele schijnbare banden met bestaande personen zijn toevallig en slechts schijn.
 

Bijlagen

waarom moet het in 7 draaitabellen voor elke datum 1?

Ik heb de introductiedatum verplaatst van filter naar kolommen en alle waarden gegroepeerd per dag. dan krijg je een kort en inzichtelijke draaitabel met totalen per dag en per groep.
Volgens mij kun je dan ook eenvoudig met het verbergen en tonen van details alle inzichten maken die je wilt. en loop je geen of veel minder risico dat er gegevens missen.

ik zou zo ook niet weten hoe je 7 losse draaitabellen bij elkaar kan tellen per groep (behalve handmatig)
 

Bijlagen

Hallo Excelbat en Roeljongman,

Dank voor jullie suggesties. Het is niet wat mij voor ogen staat maar het heeft me wel een hint gegeven om het probleem op te lossen door middel van een hulptabel. Dat wilde ik eigenlijk vermijden maar ik ontkom er (voorlopig) denk ik niet aan.
Ik sluit deze vraag maar. Kennelijk kan het niet zoals ik wilde.

Groetsels,
Pieter





waarom moet het in 7 draaitabellen voor elke datum 1?

Ik heb de introductiedatum verplaatst van filter naar kolommen en alle waarden gegroepeerd per dag. dan krijg je een kort en inzichtelijke draaitabel met totalen per dag en per groep.
Volgens mij kun je dan ook eenvoudig met het verbergen en tonen van details alle inzichten maken die je wilt. en loop je geen of veel minder risico dat er gegevens missen.

ik zou zo ook niet weten hoe je 7 losse draaitabellen bij elkaar kan tellen per groep (behalve handmatig)

In je oorspronkelijk tabel een extra kolom toegevoegd met datum (zonder uren en minuten).
Voorbeeld draaitabel in tabblad 'Excelbat'.

Laat maar weten of het wat is?

Bekijk bijlage 327973

Greetz/Excelbat
 
Ik heb ooit veel VBA code verzameld, en misschien kan je met onderstaande iets?
Deze code is niet van mij, op forums en internet gevonden.

Code:
Option Explicit

Sub test()

  Dim i        As Long
  Dim arSQL()  As String
  Dim objPivotCache As PivotCache
  Dim objRS    As Object
  Dim wbkNew   As Workbook
  Dim wks      As Worksheet
  Dim maanden As Variant, mnd As Variant
  maanden = Array("dec", "jan")                            'alle tabbladen met maanden

  With ActiveWorkbook
    ReDim arSQL(1 To UBound(maanden) + 1)                  'array diemnsioneren
    For Each mnd In maanden                                'iedere maand aflopen
      Set wks = Sheets(mnd) 'werkblad maand
      i = i + 1
      arSQL(i) = "SELECT * FROM [" & wks.Name & "$A1:F10]"
    Next
    Set wks = Nothing
    Set objRS = CreateObject("ADODB.Recordset")
    objRS.Open Join$(arSQL, " UNION ALL "), Join$(Array("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=", .FullName, ";Extended Properties=""Excel 8.0;"""), vbNullString)
    Set objPivotCache = .PivotCaches.Add(xlExternal)
    Set objPivotCache.Recordset = objRS
    Set objRS = Nothing

    With .Worksheets("Draaitabel")
    .Cells.Clear
      objPivotCache.CreatePivotTable TableDestination:=.Range("A3")
      Set objPivotCache = Nothing
      With ActiveSheet.PivotTables(1)
        .PivotFields("maand").Orientation = xlRowField
        .PivotFields("Persoon").Orientation = xlRowField
        .PivotFields("Omschrijving").Orientation = xlColumnField
        .PivotFields("Inkomsten").Orientation = xlDataField
      End With
    End With
  End With
  Set wbkNew = Nothing
End Sub

Code:
Sub test()

  Dim i As Long
  Dim arSQL() As String
  Dim objPivotCache As PivotCache
  Dim objRS As Object
  Dim wbkNew As Workbook
  Dim wks As Worksheet

  With ActiveWorkbook
    ReDim arSQL(1 To .Worksheets.Count)
    For Each wks In .Worksheets
      i = i + 1
arSQL(i) = "SELECT * FROM [" & wks.Name & "$A2:AV48]"
    Next wks
    Set wks = Nothing
    Set objRS = CreateObject("ADODB.Recordset")

    objRS.Open Join$(arSQL, " UNION ALL "), Join$(Array("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=", _
        .FullName, ";Extended Properties=""Excel 8.0;"""), vbNullString)
  End With

  Set wbkNew = Workbooks.Add(Template:=xlWBATWorksheet)

  With wbkNew
    Set objPivotCache = .PivotCaches.Add(xlExternal)
    Set objPivotCache.Recordset = objRS
    Set objRS = Nothing

    With .Worksheets(1)
      objPivotCache.CreatePivotTable TableDestination:=.Range("A3")
      Set objPivotCache = Nothing
 With .PivotTables(1)
        .PivotFields("Company").Orientation = xlPageField
        .PivotFields("Department").Orientation = xlRowField
        .PivotFields("Year").Orientation = xlColumnField
        .PivotFields("Cost").Orientation = xlDataField
      End With
  End With
  Set wbkNew = Nothing
End Sub

Code:
Sub demo()
  
  'Sample creation of pivot table from multiple Excel files in one directory
  'Please add your own error checking
  'Assumes common worksheet name though can easily change to common named range
  'Assumes common headers in all files
  'Uses "SELECT *" in SQL for simplicity - instead of "SELECT YourField1, YourField2, etc"
  'There is sample code for the PT fields, modify to suit
  '                                                           Fazza                May '08

  Const strFILE_PATH As String = "D:\temp\"
  Const strSHEET_NAME As String = "Sheet1"

  Dim i As Long
  Dim arSQL() As String
  Dim varFileName As Variant

  Dim objPivotCache As PivotCache
  Dim objRecordSet As Object
  Dim wbkNew As Workbook

  ChDrive strFILE_PATH
  ChDir strFILE_PATH

  'Just one way to get the file names.
  varFileName = Application.GetOpenFilename( _
      FileFilter:="Source Data File (*.xls), *.xls", _
      FilterIndex:=1, _
      Title:="Please select the source data file/s and then press ""Open""", _
      MultiSelect:=True)

  If VarType(varFileName) = vbBoolean Then
    MsgBox Prompt:="No file/s selected,", Buttons:=vbExclamation, Title:="Operation cancelled"
    Exit Sub
  End If

  ReDim arSQL(1 To UBound(varFileName))
  For i = LBound(varFileName) To UBound(varFileName)
    arSQL(i) = "SELECT * FROM `" & varFileName(i) & "`.[" & strSHEET_NAME & "$]"
  Next i

  Set objRecordSet = CreateObject("ADODB.Recordset")
  objRecordSet.Open Join$(arSQL, " UNION ALL "), "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
      ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;"""

  Set wbkNew = Workbooks.Add(Template:=xlWBATWorksheet)
  With wbkNew
    Set objPivotCache = .PivotCaches.Add(xlExternal)
    Set objPivotCache.Recordset = objRecordSet
    Set objRecordSet = Nothing
    With .Worksheets(1)
      objPivotCache.CreatePivotTable TableDestination:=.Range("A3")
      Set objPivotCache = Nothing

'      'Sample pivot table. CHANGE TO YOUR FIELD NAMES
'      With .PivotTables(1)
'        .PivotFields("FY").Orientation = xlPageField
'        .PivotFields("Cost Code").Orientation = xlRowField
'        .PivotFields("Department").Orientation = xlColumnField
'        .PivotFields("Cost").Orientation = xlDataField
'      End With

    End With
  End With
  Set wbkNew = Nothing
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan