人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数について教えてください。
例えば氏名を入力したセルのとなりに性別を男、または女と入力された100人分のデータがあったとします。
この表から男、または女だけを抜き出した表を表示させたいのですが、ソートするのではなく、別のシートに一覧表として表示させるようなことはできますでしょうか。
VLOOKUPでできるかもしれないと思いましたが、これは該当するデータを1つ拾ってくる関数なので違うような気がします。
よろしくお願い致します。



●質問者: tacoru
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:100人 エクセル セル ソート データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nanntenn
●35ポイント

(マクロで処理した方がすっきりしますが)

関数で処理したいということなので以下ではどうですか。

Sheet1(名前リスト)

A列;番号(1?100) 例では、1?10まで。

B列;名前

C列;性別


Sheet2(抜き出す表)

A列;=IF(Sheet1!C2="男",1,0) '男であれば1

B列;=SUM($A$2:A2) 'カウント

C列;1?100 '番号1?100(例では1?10)


'男性の行番号

E列;=IF(ISERROR(VLOOKUP(C2,$B$2:$C$10,2,0)=TRUE),"",VLOOKUP(C2,$B$2:$C$10,2,0))

'男性の名前

F列;=IF(ISERROR(VLOOKUP(E2,Sheet1!$A$2:$B$11,2,0)=TRUE),"",VLOOKUP(E2,Sheet1!$A$2:$B$11,2,0))

http://cid-df56e5e5c62da2d4.office.live.com/browse.aspx/%e5%85%a...

◎質問者からの返答

初歩的な質問で恐縮ですが、E列;=IF(ISERROR(VLOOKUP(C2,$B$2:$C$10,2,0)=TRUE),"",VLOOKUP(C2,$B$2:$C$10,2,0)) はE2のセルに、F列;=IF(ISERROR(VLOOKUP(E2,Sheet1!$A$2:$B$11,2,0)=TRUE),"",VLOOKUP(E2,Sheet1!$A$2:$B$11,2,0))

はF2にセルに

入れてみましたが何も起こりません。もう少し詳しくお教え頂ければ助かります。


2 ● SALINGER
●35ポイント ベストアンサー

これは配列数式で1つの関数でできるのですよ。


例えば、名前がA列、B列に男女が書いてあって100行あるとして

C1に次の数式を入れて、Ctrl+Shift+Enterで配列数式にして下にコピーすれば男の名前が抽出されます。

=INDEX(A$1:A$100,SMALL(IF(B$1:B$100="男",ROW(B$1:B$100),101),ROW()))

配列数式とは何かというのはこちらを見てください。

http://pc.nikkeibp.co.jp/pc21/special/hr/

早い話が作業列を使わずに一発でやるテクニックというところかな。


コードの説明をすると

IF(B$1:B$100="男",ROW(B$1:B$100),101)

で、B列が男の場合その行番号、それ以外は101を返す。


SMALL(?,ROW())

その行番目に小さい値を返す。


INDEX(A$1:A$100,?)

A列の?番目の値を返す。

◎質問者からの返答

分かりやすいご説明ありがとうございます。

正にこれです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ