• ベストアンサー

【エクセル】月間個人別集計表の作成方法ほか

ここ数日いろいろ検索していたのですが、ビビッっとくるものがなく、申し訳ありませんが、どなたか御教授ください。 1 やりたいこと   超過勤務の計算を個人別に集計したい。   データの元ネタはCSVで毎月出力されるため、   これをエクセルに貼り付け、別シートに集計表を作成したい。 2 具体的には ●レコード数(500件程度/月)   A   B   C   D   E   F    I 1 名前 社員ID 部署ID 担当名  日付  超勤125 超勤150 2 氏名1 123  1234  販売  2008/7/3 240   100 3 氏名1 123  1234  販売  2008/7/4 100    0 4 氏名1 123  1234  販売  2008/7/5 150    0 5 氏名1 123  1234  販売  2008/7/6  30    0 6 氏名2 456  7890  流通  2008/7/1 240   190 7 氏名2 456  7890  流通  2008/7/10 240   110 8 氏名2 456  7890  流通  2008/7/11 150    90 9 氏名3 987  7890  流通  2008/7/3 130   100 ※超勤125、超勤150のデータは分単位である。 ●作りたい集計表(別シートに作成することを想定) 名前  社員ID 部署ID 担当名  超勤125 超勤150 氏名1  123  1234  販売  9(520)  2(100)   氏名2  456  7890  流通  8(480)  5(300) 氏名3  987  7890  流通  2(130)  2(100) ※分単位を時間単位(30分以上切上げ)で集計したい。 ※超勤125、超勤150のカッコ内データは便宜的に表示したが、 本来不要な表示である。 3 ソフトのバージョン   WinXp Exel2002 4 その他 (1)ピボットテーブル ピボットテーブルをにわか仕込みで勉強しましたが、 支給割合(125,150)ごとにうまく集計できませんでした。 氏名の隣にIDや担当名を表示することもできなかったです。 (2)毎月、同じ工程を踏む(CSV→エクセル貼り付け→集計表作成)ので、マクロを使用したいと考えています。が、初心者です(泣)。申し訳ありませんが、どなたか助けてください。 (3)部署ID別、担当別一覧表も併せて作成したいです。  

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.3

   A    B    C    D    E    F 1 名前  社員ID 部署ID 担当名 超勤125 超勤150 2 氏名1   123  1234 販売     9    2 3 氏名2   456  7890 流通     11    7 4 氏名3   987  7890 流通     2    2 B2: =VLOOKUP($A2,Sheet1!$A$2:$D$600,COLUMN(),FALSE) 此れを右2列にドラッグ&ペースト E2: =ROUND(SUMPRODUCT((Sheet1!$A$2:$A$600=$A2)*(Sheet1!F$2:F$600))/60,0) F2: =ROUND(SUMPRODUCT((Sheet1!$A$2:$A$600=$A2)*(Sheet1!I$2:I$600))/60,0) 範囲 B2:F2 を下方にズズーッとドラッグ&ペースト

chihatatu
質問者

お礼

早速のご対応に大変感謝しています。 ありがとうございました。 この数日の悩みが一気に晴れた感じです。 もっと勉強します。お手数おかけしました。 担当別一覧表や部署ID別一覧についても この応用でやってみたいと思います。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

一例として: Sub test() Dim Dic As Object Dim i As Long, j As Long Dim k As Long Dim v, vv, key Set Dic = CreateObject("Scripting.Dictionary") With Worksheets("Sheet1") v = .Range(.[A2], .Cells(Rows.Count, 1).End(xlUp).Resize(, 7)) End With ReDim vv(1 To 6, 1 To UBound(v, 1)) For k = 1 To UBound(v, 1) If Not Dic.Exists(v(k, 2)) Then i = i + 1 vv(1, i) = v(k, 1): vv(2, i) = v(k, 2): vv(3, i) = v(k, 3) vv(4, i) = v(k, 4): vv(5, i) = v(k, 6): vv(6, i) = v(k, 7) Dic(v(k, 2)) = Array(v(k, 2), i) Else j = Dic(v(k, 2))(1) vv(1, j) = v(k, 1): vv(2, j) = v(k, 2): vv(3, j) = v(k, 3) vv(4, j) = v(k, 4) vv(5, j) = vv(5, j) + v(k, 6) vv(6, j) = vv(6, j) + v(k, 7) End If Next With Excel.Application For k = 1 To i vv(5, k) = .Ceiling(TimeSerial(0, vv(5, k), 0), _ TimeValue("0:30:0")) * 24 vv(6, k) = .Ceiling(TimeSerial(0, vv(6, k), 0), _ TimeValue("0:30:0")) * 24 Next End With ReDim Preserve vv(1 To 6, 1 To i) With Worksheets("Sheet2") .Cells.ClearContents .Range("A1").Resize(, 6).Value = _ Array("名前", "社員ID", "部署ID", "担当名", "超勤125", "超勤150") .Range("A2").Resize(i, 6).Value = Application.Transpose(vv) End With Set Dic = Nothing Erase v, vv End Sub

回答No.2

先般このOKWaveで教えてもらった数式ですが、使えないでしょうか?。 =SUMPRODUCT(($E$3:$E$500>=DATE(2008,7,4))*($E$3:$E$500<=DATE(2008,7,9))*(($A$3:$A$500=$B1)*($F$3:$F$500))) 超勤150の集計は$G$3~に訂正する。 =sumproduct((日付欄を期間始まり)*(日付欄を期間終わり))指定します。更に続けて*(氏名1氏を指定($B1))*(集計したい欄を指定)) で如何でしょう。 集計値の換算(時間単位)は自分で追加してください。 IDや担当名の表示はコピペで持って来て下さい。 CSV-Fileをexcelに貼り付けた時に表示形式の指定、修正が必要かもしれませんね。

chihatatu
質問者

お礼

早速のご回答ありがとうございます。 恥ずかしながら今回初めて「SUMPRODUCT」関数の意味がわかったので、 今後は多用していきたいと思います。 お手数おかけしました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

CSVファイルの区切りはどうなっていますか? ※CSV形式テキストファイルとはどのようなファイルでしょうか。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_020.html を参照願います。 それともExcelに貼り付けた状態からの実行でしょうか?

chihatatu
質問者

補足

早速のレスありがとうございます。 情報が不十分で申し訳ありません。 扱うCSVファイルは、文字列項目はカンマでは区切られているものの、両端がダブルクォーテーションやシングルクォーテーションで囲われていないものです。 改行コードはCR+LFが使用されている(模様です)。 はっきりしなくて申し訳ありません。 私自身があまり詳しくないため、今回の補足で情報が不足するようでしたら、Excelに貼り付けた状態からの実行で構いません。 いろいろお手数おかけします。

関連するQ&A

  • 集計表、グラフの作成について

    いつもお世話になっております。 AccessのDBからの集計表、グラフの作成につてお聞きしたいです。 AccessでEXCELのような集計表を作る場合、クロス集計クエリかピボットテーブルを使用するかと思うのですが、こういった表の体裁は変更がききませんよね? 例えば会議で使うグラフや表の資料を作成する場合、AccessのDBのほうから必要なデータ(ある程度集計抽出したデータ)をエクスポートしてEXCELのピボットテーブルで表を作成し、このデータを別シートにコピーして表の体裁の変更やグラフの作成をしています。 内容によっては結構時間がかかるので、表を作成するのに何か効率の良い方法はないでしょうか?

  • エクセルの表作成

    エクセルの表作成 懇親会開催通知を20の部署に送り、その後返信されるメールをチェックして参加者の集計を頼まれました。 エクセルで表作成し、部署名、○○期、役職、氏名、合計人数、備考欄を作り、 各部署の最終行などに部署の参加人数を入れて一番下にSUMで合計が出るようにしたいのですが・・・ 参加者が各部署によって違うので(だいたい多くて3,4人ほどなのですが)各部署の人数を入れるセルの位置で引っかかっています。そして項目が多いので極端な縦長か横長になってしまいます。 部署を10×2にして同じ表が2つになっても構いません。シンプルな表になるかと思うのですが表作成に慣れていませんのでぜひ教えていただけると助かります。

  • エクセルのピボットで、集計値降順で表示するには?

    お世話になります。 エクセルのピボットテーブルで、担当者ごとの売上集計表を作成しています。ウィザードで、「行(R)」に担当者名、「データ(D)」に合計/売上をいれています。 名前の順ではなく、売上集計額の高い順に表示することはできますか? 今はピボットテーブルから値貼り付けして 普通の表にしてから並べ替えています。 よろしくお願い致します。

  • EXCEL:ピボットテーブルの並び替え

    EXCEL:ピボットテーブルの並び替えについて質問があります。 仕事で契約の集計表をピボットテーブルを利用して作成しているのですが、並び替えがうまくいきません。 現在の設定は以下の通りです。 ・行:担当者 ・列:(契約の)成立月 ・データ:(各契約の)収益 担当者ごとに振り分けていて、その担当者にIDをつけています。 ID順(昇順)に並べたいのですが、行にIDを含んでいないため、担当者のあいうえお順に並んでしまいます。 IDを行にいれると、担当者ごとの集計以外にIDごとの集計も表示されてしまい、データが2重に表示されてしまいます。 行に含まれない項目を基準にした並び替え方法、もしくは、IDを行に含めてもデータが2重に表示されない方法があれば教えてください。

  • 【エクセル】分を集計して日に変換したいのですが・・・【ピボットテーブル】 

    申し訳ありません。教えてください。 ピボットテーブルで集計シートを作成しています。 通常は分で作業時間を管理しているのですが、 集計シートでピボットテーブルを使って、 日単位(端数がある場合は、時間と分)に置き換えたいのです。 どなたかご教示ください。 よろしくお願いします。 <例> 集計元シート   A   B 1 氏名 作業分数 2 佐藤 120 3 佐藤 100 4 田中 480 5 後藤 240 6 田中 150 7 後藤 240    ↓ ピボットテーブル集計表   A   B 1 氏名 作業日数等 2 佐藤 0日3:40 3 田中 1日2:30 4 後藤 1日 ※集計元シートからいきなりピボットテーブルの集計表のようにはできないと思っています。 ※現状は集計元シートのC列を時間に置き換え集計しています。  (例)C2=B2/1440とし、表示形式を[h]:mmとしています。

  • エクセルで行数の多いCSVデータの集計方法

    はじめまして。 会社の売上げデータを集計していてわからないことがありご質問させていただきます。 得意先の納品伝票のデータをCSVで出力してそれをエクセルのピボットテーブルで月間の日別商品別の納品数量の表を作っていたのですが、データ件数が多くなり65535行を超えてしまいデータが全て表示できなくなってしまいました。CSVで出力するデータの日付の範囲を一ヶ月ではなく、半月ごとに分けて2つのファイルにして集計しようと思ったのですが、うまく集計する方法がわかりません。このような場合どうやってやるのがよいのでしょうか。 CSVデータは例えて書きますと以下のような配置です。 日付・便・商品名・店舗名・数量・金額・その他・・・ 8/1   1   ビール  名古屋  5   50  8/1   1   日本酒  大阪   3   150 8/2   2   ビール  札幌   4   40 8/3   1   焼酎   東京   2   80 8/3   1   焼酎   名古屋  1   40 このうち店舗別には集計しない為8/3の1便の焼酎の数量は3として集計します。 ピボットテーブルでは縦に商品名、横に日付、でその数量を集計します。また、シートに便を指定できるようにしています。 当社には専門のプログラマーがおらず、業者の方に依頼すると高額な費用が掛かってしまうため予算が無い私には自分で何とかするしか方法が無いです。 どなたかよい方法を教えて頂けませんでしょうか。 よろしくお願い致します。

  • EXCEL(エクセル)の集計方法について。

    EXCEL(エクセル)の集計方法について。 仕事が進まず、大変困っています。 列A~Zまでに複数の項目があります。 ピボットを使い、表を作ります。 縦にA~Cの項目「名称」、「型式」、「単価」をとります。 横にD~Eの項目、「受注番号」、「項」をとります。 そして、Fの項目「個数」の集計をします。 しかし横が入り切れませんでした。 「受注番号」、「項」を基準にデータを三つに分け、ピボットで作成しましたが、それでは縦の行がバラバラになってしまいます。 縦の行は全く同じものをそれぞれの表では使いたいのです。 そういう表は作れますか?なるべく関数は使いたくありません。(データが何千行とあるので重くなります) 初心者なので、説明が分かりづらく、申し訳ございません。 アドレスをお願いします。

  • 集計表の作成(自動転記)

    集計表への自動転記の方法を教えてください。 方法は可能であれば関数を用いた方法でお願い致します。 マクロを使用して作成する場合でも構いません。 ※1枚目の画像 完成後の集計表となります。 データ一覧(CSV)より、データを集計し、結果を転記する。 売上(2)については、指定のセルを転記するのではなく、 別にある対象リストに該当するもののみを集計し、転記する。 ※2枚目の画像 データ一覧(CSV)です。 よろしくお願い致します。

  • EXCEL2000:ピボットテーブルから参照

    EXCEL2000で質問があります。 ピボットテーブルで作成した集計表に表示される値を参照して、別の集計表を作成したいのですが、ピボットテーブルを更新した際にデータに変更があるとその参照先セルの位置が変更してしまいます。 常にその項目(データの合計部分など)を参照するように設定することは可能でしょうか? ご回答よろしくお願い致します。 詳細は以下の通りです。 ●基本テーブル(sheet1:データ) 業績集計表です。 A列:契約者 B列:担当者 C列:売上げ(金額) D列:契約成立月 ●ピボットテーブル集計表(sheet2:集計表1) 行:担当者 列:契約成立月 データ:売上げの合計 ●計算式がある集計表(sheet2:集計表2) 各月の実績欄=集計表1の「契約成立月」ごとの「売上げの合計」 以上です。

  • エクセルでの各人別集計方法を探しています

    エクセルでの各人別集計方法を探しています 1.背景 会社の各営業マンに損益見込みを出させようと思います。営業マンのスキルの関係から直感的にわかりやすい以下のような表形式で入力させます。全部で3項目×12か月=36箇所の入力をお願いしています。       1月 2月 3月 ~ 12月 計 販売数   10 11  13    15  200     売上    100 110 130   150  2000 経費    30 40  50    60  500 利益 70 70 80 90 1500 (利益は単純に差引計算) このデータを集計したいと思います。 2.制約条件  但し次の理由からピボットによる集計をしたいと思っています。 (理由)  1).全部で100人くらいいる営業マンが所属するグループごとにも集計したい  2).営業マンのうち異動になる人間を除きたい。  3).異動になる人間や人数の影響額を確定するために作成するので、誰が移動するか未確定である。  4).上記の理由から、Aさんを除外したり、含めたり、というようにフレキシブルに集計ができるようにしたい  5).上記の理由から串刺し計算はなじまないと思う(異動が誰か特定していないので) 3.私見  1.の表形式ではピボット集計ができないので、次のような手法を考えています。  1)営業マンに配賦するエクセルにもう一枚シートを添付  2)添付シートに、表から次のようなデータ形式になるようにデータを飛ばす設定   (単純に=で飛ばすだけです)  名前 月 項目 金額 A 1 販売数 10  A   2 販売数 20    ‥  A  計  利益  1500  3)全営業マンの2)の添付シートを一枚のシートに縦長に値張り付ける  名前 月 項目 金額 A 1 販売数 10  A   2 販売数 20    ‥  A  計  利益  1500  B  1  販売数 11    ‥  4)ピボット集計 4.質問事項  上記以外に、何かスムーズにいく方法がありますでしょうか。  非常に手作業が多く、面倒です。  当方はVBAやマクロは使えません。 よろしくお願いいたします。

専門家に質問してみよう