- ベストアンサー
ピポットテーブルで個数どうしの割合の出し方
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ピボット(pivot)テーブルでは期待のことはできないと思います。 少なくとも私にはできません。 私だったら、VBAとSQLを使って実現します。 以下がサンプルコードです。 シート名がDataとなっている前提のコードです。 Option Explicit Sub Sample() Dim SQL As String Dim cn As Object Dim rs As Object Dim i As Long Dim DRange As Range 'SQL全文を組み立て SQL = "SELECT [動物]," & vbCrLf SQL = SQL & "count([動物]) as [頭数]," & vbCrLf SQL = SQL & "count([死亡原因]) as [死亡数]," & vbCrLf SQL = SQL & "[死亡数]/[頭数] as [死亡率]" & vbCrLf SQL = SQL & "FROM [" & "Data" & "$A1:B9]" & vbCrLf SQL = SQL & "GROUP BY [動物]" & vbCrLf SQL = SQL & "ORDER BY [動物]" & vbCrLf 'SQLを実行 Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "Microsoft.ACE.OLEDB.12.0" cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1" cn.Open ThisWorkbook.Path & "\" & ThisWorkbook.Name rs.Open SQL, cn '出力先を定義してクリアー With ThisWorkbook.Sheets("Data") Set DRange = Range(.Cells(3, 4), .Cells(7, 9)) End With DRange.ClearContents '列名を出力 For i = 0 To (rs.Fields.Count - 1) DRange.Cells(1, i + 1).Value = rs.Fields(i).Name Next '結果セットを出力 DRange.Cells(2, 1).CopyFromRecordset rs '後処理 rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
その他の回答 (1)
- aokii
- ベストアンサー率23% (5210/22062)
G4セルに、=F2/E2 と記入して下にドラッグコピーしてみてください。
お礼
回答ありがとうございます。 言葉が足りなくて申し訳ございませんが、 ピポットテーブルのデータとして行うことはできないでしょうか。
お礼
HohoPapa様 詳しく答えてくださってありがとうございます。 ピポットテーブルではできないのですね。 ありがたくこちらのコードを使わせていただきます。