電子書籍の厳選無料作品が豊富!

社員の資格管理をExcelを使って行いたいと考えてます。
資格名ごとにシートを作成し、A列にその資格を所有している社員の氏名を入力しておきます。
マクロを実行する事に写真のように一覧シートへ氏名別資格別に表形式で表示したのですが、どのようなコードを書けばできますでしょうか?

「各シートの内容をVBAを使って一覧表形式」の質問画像

A 回答 (3件)

こんにちは



>どのようなコードを書けばできますでしょうか?
ほとんど値の転記みたいな内容なので、「マクロの記録」を少し修正すればできるでしょう。

まず、以下の手順を記録します。
 1)社員マスタシートのA列を、一覧シートのA列へコピペ
 2)B列に関数式で
  =IF(COUNTIF(資格1!A:A,$A2),"〇","") を設定
 3)C列も同様
 4)D列も同様
 5)B:D列をコピー、値をペーストで定数化

以上の記録ができたなら、対象範囲だけ可変になるように修正すれば完成です。
最終行(=対象範囲)は、定番の
 Cells(Rows.Count, 対象列).End(xlup).Row
などで取得できますので、これを利用すればよさそうです。
    • good
    • 0

こんにちは


これから作るの?
多分、⇒(考え方)逆ではないかと思います
一覧表を先に作り、それを基に資格で分けたり、取得年月日で分けたり(ある場合)する方が良いと思いますよ
Excelなら単純に一覧表で良いと思いますが、名前だけでなくIDなどになる数値など行方向がユニークになるような情報を入れておいた方が良いと思います。まあ、どこまでデータを使うのか分からないので取り合えず。

もし、
すでに画像左が有って、使えないので 改修する為に一覧シートに纏め 
処理の矢印を逆にしたいと言う事でマクロを使うのかな、、関数だと参照先を削除できないからね。
いずれにしてもご質問のやりたい事は、関数でもマクロでもさほど難しい事ではないと思いますが、セルアドレスや分けてある各シートの内容が分からないと 想像になってしまいますね
もう少し詳細を示された方が良いと思います。
    • good
    • 1

質問者さんの線形でないデータ構造では、時間の無駄です。

以下を参考にデータ構造を組み直してください。線形にすると検索、抽出、索引、集計など加工が非常に楽にできます。

●資格マスターファイル
11、お散歩一級
12、お散歩二級
●社員マスターファイル
1001、青木一郎
1002、赤木次郎
●資格取得記録簿
20100101、1001、12
20110101、1002、11
20110101、1001、11
    • good
    • 1

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