- 締切済み
エクセルで人ごとの計算
初心者の質問ですがよろしくお願いいたします 10×10ぐらいの表に人名と売上金が書いてあるものの 人別に売上金の合計を出すのはどうすればいいのでしょう? よろしくお願いいたします
- みんなの回答 (3)
- 専門家の回答
みんなの回答
仮に、こんな表であるとして考えます(表1) 日付 100 200 300 2007/2/2 A B C 2007/2/3 B A C 2007/2/4 C A B 2007/2/5 D A B A,B,Cは、人の名前 このままでは、どうしようもないので、下記の手順で所謂、データベースの形式に変換します。 手順1 名前の右となりののセルに金額を入れます(表2) 2007/2/2 A 100 B 200 C 300 2007/2/3 B 100 A 200 C 300 2007/2/4 C 100 A 200 B 300 2007/2/5 D 100 A 200 B 300 手順2 縦につなぎ合せます(表3) 日付 名前 金額 2007/2/2 A 100 2007/2/3 B 100 2007/2/4 C 100 2007/2/5 D 100 2007/2/2 B 200 2007/2/3 A 200 2007/2/4 A 200 2007/2/5 A 200 2007/2/2 C 300 2007/2/3 C 300 2007/2/4 B 300 2007/2/5 B 300 小生は、当初、こんな表であろうと、想像しました。 こうしてできた表に対し、Pivotテーブルを使って、 行に「名前」、データに金額をドラッグします。 結果は、下記のようになります(表4) sum 名前 合計 a 4500 b 4500 c 4500 d 4500 e 4500 f 4500 g 4500 h 4500 i 4500 総計 40500 以上は、マニュアルでの操作ですが、これを一気にマクロにやらせるには、下記のプロシージャを VBA editor画面にペーストしてください。 Sub Macro1() Sheets("Sheet2").Cells.ClearContents Sheets("Sheet3").Cells.ClearContents Sheets("Sheet1").Select area = Sheets("Sheet1").UsedRange.Address myArray = Range(area).Value r = UBound(myArray, 1) '縦の行数 c = UBound(myArray, 2) '横の列数 Sheets("Sheet2").Select Cells(1, 1).Value = "Date" Cells(1, 2).Value = "名前" Cells(1, 3).Value = "金額" Count = 1 For j = 2 To c For i = 2 To r Count = Count + 1 Cells(Count, 1).Value = myArray(i, 1) Cells(Count, 2).Value = myArray(i, j) Cells(Count, 3).Value = myArray(1, j) Next i ' 縦 Next '横 myArea = Worksheets("Sheet2").UsedRange.Address ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=myArea, TableDestination:="", TableName:="PivotTable1" ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:="名前" With ActiveSheet.PivotTables("PivotTable1").PivotFields("金額") .Orientation = xlDataField .Name = "sum" .Function = xlSum End With ActiveSheet.Name = "Pivot" Cells.Select Selection.Copy Sheets("Sheet3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone Application.DisplayAlerts = False Sheets("Pivot").Delete Application.DisplayAlerts = True End Sub --------------------------------- ピボットテーブルの他に、手としては、エクセルメニュの「データ・集計」もありそうです。 表3に対し、準備として、名前で並び替えをしておきます。 範囲を選択した上で、「データ、集計」を選択。 グループの基準:名前 集計の方法:合計 集計するフィールド:金額 現在の集計・・・にチェックマーク 集計行をデータ・・にチェックマーク これで、OKを押すと、求めることができます。
- imogasi
- ベストアンサー率27% (4737/17069)
いつも質問を見て思うのですが、質問者は、擬似実例でも質問に挙げて、質問してください。 というのも (1)関数、VBAなどによる回答は、具体的に行、列を決めないと(例としての、)答えを上げられないからです。 言葉による説明で判るぐらいのレベルの方なら、ここに質問しないでも、自分でWEB・本なりを調べて、解決するか、細部の質問になるはずです。 (2)回答者が標準で予想した点が、少し違うと、全面的にその方法がダメと言う場合も有りますから。 (3)質問内容を適切に表現する知恵は、ビジネスや学術においても大切です。これができるようになれば、解決法は自ずと出てきます。 >10×10ぐらいの表 10行・10列の表のこと? または100行のデータ?。 あいまいな表現です。多分この問題の解法に影響しないと思うが。 ーーー 2つ問題があって (1)「人」の名を重複なく、シートにリストアップする術。 (2)その右セルに、その人の名が出ている、売上高を集計して セットする術。 (2)の回答が載る場合が多い。人力で人名を拾って入力するなら 、知恵は要らないが、これも(2)に劣らず、質問事項のはず。 (2)は ・SUMPRODUCT ・配列数式 ・VBA ・Dsumは使いにくい ・ピボット・テーブル(お勧め) ・集計(ソート必要) などあります。 こういうエクセルの用語を知れば、後は自力でできるのですか? そうでなければ、エクセルのリスト形式(判らなければ調べること)で、例示データを作って、補足してください。
いろいろな方法があります。 (1) =sumif(条件範囲、条件、値の範囲) (2)人の列に関して、ソートした上で、目で追って、 sum関数で合計を求める (3)PIVOTを使って、人に関して、合計を求める 色々な条件があるでしょうから、PIVOTが一番良いのではないでしょうか。
補足
ご回答ありがとうございます そうですよねえ、解りにくいですよねえ。おっしゃるとおりです 表はA列に日にちがあって1行目に金額があります その中に名前が振ってあってその名前ごとの合計を出したいんです B2=田中 C4=佐藤・・・・とか書いてあり 1行目にB1=10、C1=15・・・となってます これってまず最初に名前の次のセルに数値を計算して隠しておくほうが やりやすいんでしょうか? システムが多分解ってないと思いますが よろしくお願いいたします