Excel2002を使用中で、質問があります。
ぜひ教えていただきたいです!
よろしくお願いします。

下記のような形で表をもっています。
-----------------------------------
名前    部門    取得資格 
田中    営業部   情報処理2種
田中    営業部   シスアド
山本    管理部   簿記
山本    管理部   シスアド
鈴木    システム部  シスアド
 ・       ・        ・
 ・       ・        ・
 ・       ・        ・
------------------------------------

約1000行近くあります。
このように、一人につき、複数の資格を取得している場合はその名前がまたほかの行で登場する形です。

今回やりたいのは、この中で、たとえば
「シスアドの資格だけをもっている人」を抜き出したいのです。

上の例ならば、複数持ってる田中さんや山本さんではなくてシスアドだけの鈴木さんを抜き出したいということす。

どんなふうにやればいいのか、関数なのか、、オートフル?
なのか、それともマクロを使わないといけないのか。
まったくわかりませんので、
どうかどうか教えてください!!!
よろしくお願いいたします。お待ちしています。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

VBAで


標準モジュールに貼りつけて実行。
Sub test01()
d = Range("a1").CurrentRegion.Rows.Count
'---シートコピー
Sheets("Sheet1").Copy Before:=Sheets(1)
'-----ソート
Worksheets("Sheet1 (2)").Activate
Range(Cells(1, 1), Cells(d, 2)).Sort Key1:=Range("A1"), Order1:=xlAscending
'-------重複者削除
m = Cells(1, "A") '第1行目は特別
fst = "y" '出初め
For i = 2 To d
If m = Cells(i, "A") Then
If fst = "y" Then
Rows(i - 1).Clear '重複判明、出初めも削除
fst = "n"
End If
Rows(i).Clear '重複しているので現在行を削除
Else
'----シスアド以外削除
If Cells(i - 1, "B") <> "シスアド" Then
Rows(i - 1).Clear
End If
m = Cells(i, "a")
fst = "y"
End If
Next i
'-----最後行処理
If Cells(i - 1, "B") <> "シスアド" Then
Rows(i - 1).Clear
End If
'-----ソート
Range(Cells(1, 1), Cells(d, 2)).Sort Key1:=Range("A1"), Order1:=xlAscending
End Sub
’----
市田シスアド
小森衛生士
上田情報
大村防火管理
市田介護士
木村シスアド
小森行政士
鈴木シスアド
仲野会計士
山田労務士
木村危険物
下田シスアド
の例で、結果は、別シートに
下田シスアド
鈴木シスアド
となります。
上記は微妙なロジックを使っているので、誤りないと思いますが、十分チェックしてください。
本番で変えるのは、実際の列の番号A,Bとソート範囲の
Range(Cells(1, 1), Cells(d, 2)).SorとSortキーのA1 のところぐらいでしょうか。
    • good
    • 0
この回答へのお礼

大変お礼が遅くなって申し訳ございません。
また皆様ありがとうございました。
ここであわせてお礼申し上げます。
皆様のおかげで助かりました!!!感謝しています。

お礼日時:2003/11/08 18:03

集計で持っている資格の数を数えて、保有数が1の人を選び出し、その中からシスアドだけの人を選択したらどうでしょう?

    • good
    • 0

オートフィルタはどうですが?


範囲指定をしてからデータ→フィルタ→オートフィルタにしてシスアドの下向き矢印をクリックしてシスアドを選ぶ。という感じだったと思いますが・・・試してみて下さい。ずいぶん前にやったことがあったのでしっかりした回答でなくてすみません。
※ただし範囲指定のとき名前 部門 取得資格の欄を範囲指定して取得資格の列の下向き三角をクリックしてみてください。
    • good
    • 0

こんにちは。

maruru01です。

関数でも出来ますが、ものすごく複雑で長くなりますので、オートフィルタ(またはフィルタオプション)の方法を。
作業列を使用します。
元の表がA~C列として、D列を作業列とします。
D1には適当にタイトルを付けます。(仮に「取得数」とします。)
D2に、

=SUMPRODUCT(($A$2:$A$6=A2)*($B$2:$B$6=B2))

と入力して、下の行へコピーします。
これは、各人の資格取得数です。
なお、名前だけでは同姓があるかも知れませんので、名前+部門にしてあります。
また、とりあえずデータ範囲は2~6行になっていますので、適宜変更して下さい。

これで、A~D列でオートフィルタをかけます。
そして、条件を、
取得資格(C列):「シスアド」
取得数(D列):「1」
にして抽出します。
これで、システム部の鈴木のみが抽出出来ます。
    • good
    • 0

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


人気Q&Aランキング