- 締切済み
Excel、マクロ、VBAで実現できないでしょうか
初めて質問させていただきます。 Excelで給与計算を行っているのですが、現在、氏名と給与が記載された名簿が、月毎に別のシートで管理されています。それを、下記のように複数の月をまとめて単一のシートにしたいのです。 10月 11月 Aさん 20万円 Aさん 22万円 Bさん 25万円 Cさん 40万円 Cさん 41万円 Dさん 30万円 Dさん 30万円 Eさん 25万円 Eさん 28万円 Fさん 15万円 Bさんは10月末に退職済みのため、11月名簿には存在しません。また、Fさんは11月1日採用のため、10月名簿には存在しません。この点がネックです。 Accessも勉強すれば使用可能です。VBA初心者で恐縮なのですが、何かヒントをいただけないでしょうか。ご教授よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mame9999
- ベストアンサー率44% (90/203)
人名だけの名簿のような物があれば あるシートのA列に名前をいれて (BさんもFさんも含む) Vlookupで検索すれば可能ですね もちろんその月に発生していない人については Vlookupの結果がエラーの時は0 そうでないときはVLookupの結果 と言うふうにしておくといいですね
- CHRONOS_0
- ベストアンサー率54% (457/838)
Accessが使えるのならAccessが簡単ですね まずExcelのデータをデータベースらしく作り替えます 氏名 給与 月 Aさん 200000 10月 Bさん 250000 10月 Cさん 400000 10月 Dさん 300000 10月 Eさん 250000 10月 氏名 給与 月 Aさん 220000 11月 Cさん 410000 11月 Dさん 300000 11月 Eさん 280000 11月 Fさん 150000 11月 これをAccessにインポートし追加クエリで1つのテーブルにまとめ クロス集計クエリで 氏名:行 月:列 給与:値:合計 とします 同じ発想で Excelでも表を上のように作り替え全部の月を縦に結合して ピボットテーブルで出来ますよ
お礼
お返事が遅れてしまい大変申し訳ありません。 Access、ピボットテーブル両方で試してみましたが、どちらも実現できました。大変助かりました。 Accessを使えるようになれば他にも色々と実現できそうな気がするので、ちょっと勉強してみようかと思います。ありがとうございました。
別シートになっているのがネックですが、私なら、ピポットテーブルを使います。 まず、各シートのデータを一枚にまとめます。 月 氏名 給与 10月 A 20万円 10月 B 25万円 10月 C 40万円 ・ ・ ・ 11月 A 22万円 11月 C 41万円 11月 D 30万円 ・ ・ ・ という形のデータベース形式にします。一行目は必ずタイトルにします。 後はピポットテーブルウイザードで、ピポットテーブルを作りますが、そのとき、「行」に「氏名」を、「列」に「月」を、「データ」に「給与」を指定すればご希望の形になります。ただしデータが金額でなく「個数」に設定される場合があるので、そのときは、ピポットテーブルが表示された後、データ部分を右クリックすると表示されるメニューから「フィールドの設定」を選択し、「集計の方法」を「合計」にしてください。 ピポットテーブルについて詳しくは、ヘルプを参照するか、ネット検索してみてください。
お礼
お返事が遅くなってしまい大変申し訳ありません。 同じシートに入れてしまえばピボットテーブルで実現可能だったんですね。難しく考えすぎていたかもしれません。 助かりました。どうもありがとうございます!
お礼
vlookupでも確認できるようですね。 アドバイスありがとうございました。