を連結ピボットテーブルの場合、データを含むの列見出した。

StackOverflow https://stackoverflow.com/questions/1434306

  •  07-07-2019
  •  | 
  •  

質問

私はお客様が現在使用Excelいスタッフます。て多くのワークブックのためのプロジェクトの各プロジェクトを含む1つ以上のシートを含む実際の人材データ

Sample staff planning sheet

お客様のためのすべてのデータからすべてのこれらの多くのシートやワークブックを単一のピボットテーブル。は、連結決算''ピボットの選択肢はないため、きゃのすべての非日)分野のデータです。れないが将来の見通しを見直すとは限り'行'と'Column'.私の現在の溶液であるマクロが集約されるすべてのデータのワークブックを通じてかなり重畳にコピーし、回転させます。コピーのメタデータがあることのない日)まず、そのコピー/ランスポーズのためのメタデータ列を単一の'日付'です。その後延長するメタデータのように同じデータ毎に定義されます。

私は別のワークブックしてそれが徐々に移行の連結シートから各ワークブックとともに、単一のピボットテーブルです。

での作品から非効率で、総数のタスク/課題が数多くいます。私の夢は、愛を併合の手順を完全にしか見えないことが追加されています。より効率的に統合アプローチがのってます。

い一部の外側のボックスのアイデアの詰っ!ので作業する必要のあるユーザーにwindows XP、事務所、2002年と2003年.

役に立ちましたか?

解決

やっと見つけ 受け入れ可能な解決策, れば、どなたでも興味がありました。この組み合わせを使用しており、ピボットテーブルとの TextToColumns 機能です。また、チューリングでコードも簡単です。以下のコードは参照を複数の便宜上の機能を使っていることのないようDeleteSheet"と"LastRowOn'でご利用いただけます。いかねます。

Sub Foo()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If IsStaffingSheet(ws) Then
            ws.Select
            DeleteSheet ws.Name & " - Exploded"
            TransposeSheet ws
        End If
    Next ws

End Sub

Sub TransposeSheet(ByVal ParentSheet As Worksheet)
    Dim ws As Worksheet
    Dim r As Range
    Dim ref As Variant
    Dim pt As PivotTable

    Set r = Range("StaffingStartCell")
    Set r = Range(r, r.SpecialCells(xlLastCell))

    ref = Array("'" & ActiveSheet.Name _
                    & "'!" & r.Address(ReferenceStyle:=xlR1C1))

    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation, _
                                   SourceData:=ref).CreatePivotTable TableDestination:="", _
        tableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10

    Set ws = ActiveSheet
    Set pt = ws.PivotTableWizard(TableDestination:=ActiveSheet.Cells(3, 1))
    pt.DataPivotField.PivotItems("Count of Value").Position = 1
    pt.PivotFields("Row").PivotItems("").Visible = False

    ExplodePivot ParentSheet
    Application.DisplayAlerts = False
    ws.Delete
    Application.DisplayAlerts = True

    Set ws = Nothing
End Sub


Sub ExplodePivot(ByVal ParentSheet As Worksheet)
    Dim lastRow As Long
    Dim lastCol As Long

    lastRow = LastRowOn(ActiveSheet.Name)
    lastCol = LastColumnBack(ActiveSheet, lastRow)

    Cells(lastRow, lastCol).ShowDetail = True

    Columns("B:C").Select
    Selection.Cut Destination:=Columns("S:T")

    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), _
                            DataType:=xlDelimited, _
                            Semicolon:=True
    Selection.ColumnWidth = 12
    ActiveSheet.Name = ParentSheet.Name & " - Exploded"
End Sub
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top