プロが教える店舗&オフィスのセキュリティ対策術

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
74 PC
75 ペン
76 モニタ



80 


【補足】
元の表(シート1)を編集することがあるので
自動的に反映されるよう、関数で作成できたらと思います。
シート2の構成上、抽出後のソートや、フィルタオプションは避けたいです。

わかりづらい文章で申し訳ございませんが
どなたかいいアドバイスがありましたら教えてください。
お礼は明日になってしまいますが、必ずご返答いたします。
よろしくお願いいたします。

 

A 回答 (6件)

>E74に関数を入力し、その後関数をE80までドラッグすればよいのでしょうか?


いいえ。
1.
=INDEX(シート1!C1:C11,SMALL(IF(シート1!B1:B10="渋谷区",ROW(A1:A10),11),ROW(A1:A10)))&""
の数式を掲示板上でコピーします(シート名は合わせてください)
2. E74:E80セル範囲を選択します
3. 数式バーで[Ctrl]+[V]貼り付け
4. [Ctrl]+[Shift] +[Enter] でセルへの入力を確定させます

>その際、絶対参照や相対参照は必要でしょうか?
セルのコピーはしませんので不要です。
参考まで
    • good
    • 13
この回答へのお礼

ご連絡おそくなりまして
申し訳ございません!

なんとかできました!ありがとうございました。
助かりました!

お礼日時:2009/04/04 21:21

[回答番号:No.1この回答へのお礼]に対するコメント、



1.例えば Sheet2 のセル H73 に 渋谷区 を入力して、次式を入力し
  たセル H74 を下方にズズーッとドラッグ&ペースト
  =IF(Sheet1!B1=H$73,ROW(A1),"")
2.同シートのセル E74 に次式を入力して、此れを下方にズズーッと
  ドラッグ&ペースト
  =IF(ISERROR(SMALL(H$74:H$99,ROW(A1))),"",INDEX(Sheet1!C:C,SMALL(H$74:H$99,ROW(A1))))
    • good
    • 7
この回答へのお礼

わざわざすみません。
やっと、理解できました。

本当にありがとうございました。

お礼日時:2009/04/04 21:22

配列数式を提示しても意味がわからないと、また、質問することになるんだろうなあ と思いつつ、軽量と思われる配列数式



シート1のC11セルは未入力とする
シート2のE74:E80セルを選ぶ
=INDEX(シート1!C1:C11,SMALL(IF(シート1!B1:B10="渋谷区",ROW(A1:A10),11),ROW(A1:A10)))&""
と入力後、[Ctrl]+[Shift] +[Enter] で確定({}で囲まれる)
参考まで
「【エクセル】表から条件に合ったデータを別」の回答画像4
    • good
    • 9
この回答へのお礼

ご回答ありがとうございます。
画面まで貼り付けていただき、わかりやすくて助かります。

ご指摘のとおり、配列数式については知識がなく
ちょっとわからないので
再度質問させてください。
>シート2のE74:E80セルを選ぶ
とありますが
E74に関数を入力し、その後関数をE80までドラッグすればよいのでしょうか?
その際、絶対参照や相対参照は必要でしょうか?

よろしくお願いいたします。

お礼日時:2009/04/01 14:23

No.2です。


書き忘れましたけど、配列数式なので、
式の確定時はCtrl +Shift + Enter をお忘れなく。
    • good
    • 11

こんにちは。



もう少し短い数式でもできるかもしれませんが、
一例ってことで・・・。

Sheet2のE74に

{=IF(ISERROR(INDEX(Sheet1!$A$1:$C$5,SMALL(IF((Sheet1!$B$1:$B$5)="渋谷区",ROW(Sheet1!$C$1:$C$5),""),ROW()-73),3)),"",INDEX(Sheet1!$A$1:$C$5,SMALL(IF((Sheet1!$B$1:$B$5)="渋谷区",ROW(Sheet1!$C$1:$C$5),""),ROW()-73),3))}

として、下にズリズリ~っとコピーして下さい。

Sheet1のリスト範囲はA1:C5としています。実情に合わせて変更して下さい。
数式中の ROW()-73 は74行目から始まる場合です。
    • good
    • 3
この回答へのお礼

ご回答ありがとうございます!
こんなに難しそうな関数をわざわざ作成していただき
感謝してます。
ちょっと内容を理解するのに時間がかかりそうなので
取り急ぎ、お礼をさせていただきます。

お礼日時:2009/04/01 14:25

「シート2」の何処かの空き列を1列だけ(作業列として)使ってもOKですか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
作業列を作成してもOKです!
アドバイス、よろしくお願いいたします。

お礼日時:2009/04/01 14:18

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

このQ&Aを見た人はこんなQ&Aも見ています