プロが教えるわが家の防犯対策術!

有休管理エクセルを現在、作成しています。
添付画像はシステムでCSV出力したのを貼り付けたものです。有休の取得日・付与・失効など個人の有休に関する情報が全て出てくるようになっています。(この方法でしか出力できません)
これを取得日のみ個人ごとに別シートにもってきたいので、添付画像のD列に取得日のみ表示するようにしています。

ここで、別シートには行に社員番号・氏名、列に取得日を追加していく形で作成したいので、
ピポットテーブルを使って試してみようと思ったのですが、画像のように出力したデータは例えば同一人物が2日有休を取得していると2行同じ名前が出てきます。(C列参照)

この場合、ピポットテーブルでの集計は難しいのでしょうか?(初心者です)

質問者からの補足コメント

  • 画像添付し忘れてました。。

    「エクセル・ピポットテーブルでできる?」の補足画像1
      補足日時:2020/09/15 11:35
  • 銀鱗様

    とてもご丁寧に分かりやすく教えていただき、本当にありがとうございます!!
    ただ一点うまくいかないところがあり。。
    実際のデータを手順通りに貼り付けた際に、列ラベルにあった「月」がなくなってしまったのですが何故でしょうか。

    「エクセル・ピポットテーブルでできる?」の補足画像2
    No.12の回答に寄せられた補足コメントです。 補足日時:2020/09/24 15:18

A 回答 (16件中1~10件)

「ピボットテーブルとして参照する表を作る」という下処理が必要ですが、可能ですよ。


その下処理をピボットテーブルで作りたいという事であれば、無理です。不可能です。使い方を間違っています。

ひょっとして、これをやりたいのかな?
 https://oshiete.goo.ne.jp/qa/11884211.html
であれば回答した手前、ちゃんと説明しますよ。
    • good
    • 0
この回答へのお礼

そうなんですね。
私自身、ピポットテーブルをよく分かっていなく。。

そうです!同じ質問者です。
これがいまだに解決できていないので、もしお分かりになればご教受いただきたいです。

お礼日時:2020/09/15 14:20

画像が小さすぎてさっぱり見えませんが ピボットテーブルじゃなくてクエリ


でやるべき内容かと思います。
    • good
    • 0

「実現したいこと」は、下の図のようなことでしょうか?


もしもそうであるならば、関数だけでは難しいと思います。
また ピボットテーブルやクエリでも、?? です。
マクロならば、次のようなコードでも、なんとかなりますが、
目的が違えば、このようなコードは役に立ちません。

Sub 転記用のマクロの例()
Worksheets("管理用").Activate
Set CPP = Worksheets("コピペ")
For i = 2 To 50 ' 2はデータのある最初の行番号  50はデータのある最大範囲の行番号
取得日 = CPP.Cells(i, 4)
If 取得日 <> "" Then ' 4は D列に取得日があるので 4列目の意味
社員ID = CPP.Cells(i, 2) ' 2は B列に社員IDがあるので 2列目の意味
' 続いて、「管理用」のシートで、その社員IDのある行を見つけます
行 = WorksheetFunction.Match(社員ID, Range(Cells(1, 2), Cells(500, 2)), 0)
' Cells(1, 2)はB列1行目。Cells(500, 2)はB列500行目の意味です
' これで「管理用」のシートB列の1行目~500行目のどの行に、該当社員IDがあるかになります
' 続いて、「管理用」のシートのどの列まで既得取得日が帰任されているかを見つけます
' なお、105列目(DA列)より右の列は何かに使っていて
'    取得日を記入数することに使える列は、AM(39列目)~CZ(104列目)とします。
'    取得日の記録がこの区間に入りきらない場合のことは、ここでは対処してません)
列 = 39 + WorksheetFunction.CountA(Range(Cells(行, 39), Cells(行, 104)))
Cells(行, 列) = 取得日
End If
Next
End Sub
「エクセル・ピポットテーブルでできる?」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。
すごいですね!しかし私には到底難しそうで。。

でもご回答いただきありがとうございました。

お礼日時:2020/09/24 14:14

遅くなりました。


前の質問でお答えしたピボットテーブルの作成手順をまとめています。
今しばらくお待ちください。
    • good
    • 0

まず、下準備として、「並べ替え順」の「ユーザー設定リスト」へ新規に


「4月,5月,6月,7月,8月,9月,10月,11月,12月,1月,2月,3月」
と、”年度” で並べるための設定を追加してください。
初期設定では、
「1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月」
と、”年単位” での設定になるので、のちのち表示がめんどくさくなります。

[オプション] → [詳細設定] →(一番下までスクロール)「全般」の「ユーザー設定リストの編集」
です。
「エクセル・ピポットテーブルでできる?」の回答画像5
    • good
    • 0

半年分のダミーデータを用意します。



これをやらないと、ピボットテーブルでフィールドを指定する時に
フィールド項目に「四半期」「年」が追加されるだけで「月」が出てきません。
先に「月」単位でのフィールドを追加させるためにダミーを用意します。
(他に便利なやり方があるかもしれませんが、自分は知らないのでダミーを用意しました)

データの範囲には「列」で指定してください。
添付した画像では A列 から C列 を指定しています。

なお、説明のために「既存のワークシート」にテーブルを作成していますが、
「新規ワークシート」に作成しても構いません。
「エクセル・ピポットテーブルでできる?」の回答画像6
    • good
    • 0

ピボットテーブルを挿入したら、フィールドの設定です。


「名前」「従業員No.」「有給取得日」の項目にチェックを付けてください。
この3つにチェックを付けると自動で「月」の項目が追加されますので、ここにもチェックを付けましょう。
「エクセル・ピポットテーブルでできる?」の回答画像7
    • good
    • 0

続いてA列からC列に実際のデータを貼り付けてください。


貼り付けたら、ピボットテーブルを右クリックして「更新」を選んでください。
続いて「従業員No.」順に並べ替えます。

「従業員No.」の列の一番上のセルを選択。
「行ラベル」のセルにあるボタンをクリック。
「昇順」を選択。
「エクセル・ピポットテーブルでできる?」の回答画像8
    • good
    • 0

出来上がりです。


表の見た目を好みに修正しましょう。

あとはフィルターを使って表示する従業員を指定するなど便利に使用してください。
「エクセル・ピポットテーブルでできる?」の回答画像9
    • good
    • 0

・・・余談・・・



同姓同名の方がいても、従業員No.で区別されますので大丈夫です。
「エクセル・ピポットテーブルでできる?」の回答画像10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!