• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:保有資格の管理をしているのですが、 )

保有資格の管理を効率化する方法とは?

このQ&Aのポイント
  • 保有資格の管理を効率化するために、マクロを使用する方法について相談しています。
  • 現在保有しているデータは、所有状況一覧と氏名一覧、資格名称一覧です。
  • 資格名称がア、イ、ウの3種類とした場合、未取得の資格一覧を抽出したいとのことです。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

Excelの話ですよね? VBAでやる場合ですが、氏名一覧と資格名一覧が在るのですから、ループを回して氏名と資格名の全組み合わせで所有状況一覧に在るか無いかをチェックし、無い場合に未取得情報としてシート上に書き出していく事になると思います。 その際、作業列を作って氏名+所有資格名のデータを作っておくとチェックが楽になります。 所有状況一覧として、A列が氏名(A2に項目名、A3以降にデータ)、B列が資格名、C列が所得日とします。 D列を作業列として氏名+資格名にします(D3に =A3&B3 と、入れて下にコピー)。 氏名一覧がF3以降、資格名一覧がH3以降に入っている物として、以下のコードでJ3以降に、氏名と未取得資格名を書き出して行きます。 Sub Sample()  Dim nName, nLicense, nCol  Dim sName, sLicense  nCol = 3  For nName = 3 To Range("$F$3").End(xlDown).Row   sName = Range("F" & nName)   For nLicense = 3 To Range("$H$3").End(xlDown).Row    sLicense = Range("H" & nLicense)    If Application.WorksheetFunction.CountIf(Range("D:D"), sName & sLicense) = 0 Then     Range("J" & nCol) = sName     Range("K" & nCol) = sLicense     nCol = nCol + 1    End If   Next nLicense  Next nName End Sub

starttoday
質問者

お礼

mt2008 様 大変助かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mhassy
  • ベストアンサー率43% (16/37)
回答No.3

#1 再回答です。 mt2008さんの御回答を拝見し、とても良い回答だと関心致しました。 考え方としては、私の先の回答末尾にあるものと似たロジックと考えますが・・・ 実はそこに「落とし穴」があり、前提条件等の確認が面倒だったのであえてそちらの詳細は省略しました。 「落とし穴」というのは・・・ 既存データの中に、「必ず」全ての資格が(誰かに)登録されていなければならない・・・ということです。 資格は、「一覧」ではありません。 (=全てを網羅しているわけではない。) 本来は、氏名と資格の関係一覧ですので、 誰も取得していない資格が存在する可能性が十分に予想できます。 そして、質問者さんの御希望は・・・資格取得「していない」一覧です。 業務で作成されるこの種の表では、「資格ありき(=資格のニーズが主)」でのデータが一般的です。 決して人が主ではないため、人を基にしたデータから導く結果は「足りない」情報であるのが一般的です。 基データは「単なる羅列」ですけど、目標は「個人に対していくつの資格の審査をするか」であるため、 「1X n 」の n を、既存データでは満たしていないことも考慮すべき点です。 各個人を、いくつの資格に対して比較するのか?」データを、「単なる羅列データ」から導き出すとモレが発生する・・・ということを考慮する必要が有ります。 このため、「前提次第で不備がある手法」の提示は・・・ 補足要求をしてからの提示か、 前提条件を限定しての提示が必要ですよね。 >starttodayさん 曖昧な質問は、こういった「余計な予測&手間」を生みます。 もう少し考えて、自分で努力してから、 他人へ質問するようにしてはいかがでしょう。

すると、全ての回答が全文表示されます。
  • mhassy
  • ベストアンサー率43% (16/37)
回答No.1

Excelでの問題なのか、Accessでの問題なのか記入されておりませんが・・・ 根本的な問題点がありそうですが・・・ 欲しいのは取得「していない」情報の一覧表であるとの御説明です。 元になる表(の形)で登録された、取得「している」情報を元にして、御希望の一覧を作成することは出来ないことにお気づきになっていない様子です。 A    B     C 氏名  資格   資格 ------------------ 田中 (取得日)  山田        (取得日) もしくは、 A        B     C 資格     田中   山田 ---------------------------- (資格名) (取得日)  (資格名)        (取得日) この様に、資格名と個人の関係に「有無」の情報を元々保持していなければ、 「していない=無」の情報をプログラム上で探し出すことが出来ません。 御説明の元データは、有資格者の一覧です。 元のデータ(表の構造)を手作業で作り変えない限り、自動一覧抽出は出来ないと考えます。 しかし・・・ 500行程度のデータを基にして、有無の対応表を作成する手間を考慮すると、 最初から手作業で御希望の「無資格者一覧」を作成するのと 対して違いは無いでしょう。(笑) 私が「プログラムを作るとしたら」と考えて見て、基のデータがそれじゃだめでないの?と感じたので、参考意見として回答します。 厳密には、 複雑なプログラミングで資格の一覧を作成後、 各個人との関係データを自動作成し、 そこから「無資格者一覧」を自動作成可能ですが・・・ 500行程度の表ですから、プログラミングを学習(もしくは提供を依頼する)よりも、手作業が効率的ではないかと考えます。

すると、全ての回答が全文表示されます。

関連するQ&A