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
お礼
mt2008 様 大変助かりました。 ありがとうございました。