[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルのデータを計算して表示する』(ちろ)
作業名とそれに対する作業時間が
秒表記で記載されたデータがあります
このデータをピボットで表にした際に
分単位で表示させたいのですが、ピボットを使う際にデータ自体に計算を加えて表示(秒/60=分表記)させることは可能でしょうか?
ピボットの値フィールド設定で計算するなども調べたのですが比率などでしか計算することができず困っております。
データ自体を分表記に変えるしか術はないでしょうか。
いい案がございましたらご教示いただきたく思います。
データ
名前 作業名 作業時間
Aさん B作業 3000(秒)
Aさん C作業 6000(秒)
Bさん A作業 4500(秒)
出したい形
A作業 B作業 C作業
Aさん 0(分) 50(分)100(分)
Bさん 75(分) 0(分) 0(分)
< 使用 Excel:Excel2010、使用 OS:Windows10 >
|[A] |[B] |[C] [1]|名前 |作業名|作業時間 [2]|Aさん|B作業 | 3000 [3]|Aさん|C作業 | 6000 [4]|Bさん|A作業 | 4500 新たにシート名 TMPXXX、 PVT の2シートが作成されますので 同名のシートが有る場合は随時、要変更です。 こそっと情報をコピペで拝借して、分に換算して作成後、削除しています 元情報はコピーするだけですので、変化は有りません。 A(^^; 一案ですので、何かの足しにでも。。。思い通りにならない場合はゴミ箱ポイ お願い致します。でわ。。。m(__)m Option Explicit Sub OneInstanceA() Dim i As Long Dim r As Range Dim v() As Variant Dim tWb As Workbook Dim wS1 As Worksheet Dim wSp As Worksheet Dim pC As Object Dim pT As Object Set tWb = ThisWorkbook If Not Evaluate("=ISREF(TMPXXX!A1)") Then Sheets.Add.Name = "TMPXXX" Set wS1 = Worksheets("TMPXXX") Worksheets("Sheet1").Cells(1).CurrentRegion.Copy wS1.Cells(1) Set r = wS1.Cells(1).CurrentRegion v = r.Value For i = 2 To r.Rows.Count r(i, 3) = Application.Round(r(i, 3) / 60, 0) Next If Not Evaluate("=ISREF(PVT!A1)") Then Sheets.Add.Name = "PVT" Set wSp = Worksheets("PVT") wSp.Cells.Delete Set pC = tWb.PivotCaches.Add(xlDatabase, wS1.Name & "!" & r.Address) Set pT = pC.CreatePivotTable(wSp.Name & "!r3c3", TableName:="PBXA1") With pT With .PivotFields("名前") .Orientation = xlRowField .Position = 1 End With With .PivotFields("作業名") .Orientation = xlColumnField .Position = 1 End With .AddDataField .PivotFields("作業時間"), "分単位 / 合計", xlSum wSp.PivotTables("PBXA1").TableStyle2 = "PivotStyleMedium16" End With tWb.ShowPivotTableFieldList = False Application.DisplayAlerts = False wS1.Delete Application.DisplayAlerts = True Erase v wSp.Activate End Sub (隠居Z) 2021/11/27(土) 16:46
マクロだと2010でも動くと思います。(excel2016)
Sub test() Const Newf = "作業時間(分)" '新しいフィールド名 Dim src As Range Set src = ActiveSheet.Range("A1").CurrentRegion 'Range("A1"):データの左上に変更のこと With ActiveWorkbook.PivotCaches.Create(xlDatabase, src.Address(, , xlR1C1, True)) _ .CreatePivotTable(src.Offset(, src.Columns.Count + 1)) .CalculatedFields.Add Newf, "=作業時間/60", True With .PivotFields(Newf) .Orientation = xlDataField .NumberFormat = "0(""分"")" '(分)表記 End With .PivotFields("名前").Orientation = xlRowField .PivotFields("作業名").Orientation = xlColumnField End With End Sub
(kazuo) 2021/11/27(土) 22:59
おはようございます ^^ なるほど、なるほど、とても 勉強になります。( ..)φメモメモ ちろ さん kazuoさんのコードを参考にして下さい 私のは、ごりおし、の力技的なコードでした。反省。。。m(_ _)m ありがとうございます。 ひとつ、賢くなりました。←。。。あやしい。。。^^; でわ (隠居Z) 2021/11/28(日) 07:05
遅くなってしまい申し訳ありません。
なるほど、マクロでも集計フィールドでも計算は可能なのですね。
せっかくなのでどちらの方法も試して今後のために勉強しておこうと思います。
ありがとうございました!
(ちろ) 2021/11/29(月) 14:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.