No.2ベストアンサー
- 回答日時:
分かりやすい方法はシート1に作業列を作って対応することでしょう。
シート1のE2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(AND(A2=Sheet2!F$2,B2=Sheet2!G$2),MAX(E$1:E1)+1,"")
次にシート2のA2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ROW(A1)>MAX(Sheet1!$E:$E),"",INDEX(Sheet1!$A:$D,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))
この方法の場合にはSUMPRODUCT関数の場合と比べて、データの入力範囲に制限が無く計算が重くなることもないでしょう。
どうもありがとうございます!
とても丁寧に式まで載せていただいて助かりました。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
データの入力範囲に制限が無く計算が重くなることもないというのは
ありがたいです。
心より感謝申し上げます。m(__)m
No.7
- 回答日時:
Sheet1のリストの編集で、切り取りや削除を行う場合にも対応し、且つ、C列の番号が順不同に並んでいたり、欠番がある場合にも、番号順に表示される方法です。
まず、使用していないSheet(ここでは仮にSheet3とします)のA1セルに次の数式を入力して下さい。
=IF(AND(INDEX(Sheet1!$A:$A,ROWS($1:1))=Sheet2!$F$2,INDEX(Sheet1!$B:$B,ROWS($1:1))=Sheet2!$G$2),INDEX(Sheet1!$C:$C,ROWS($1:1)),"")
次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に、Sheet1のリストの行数を上回るのに充分な行数となるまで、貼り付けて下さい。
次に、Sheet2のC2セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT(Sheet3$A:$A),"",SMALL(Sheet3$A:$A,ROWS($1:1)))
次に、Sheet2のA2セルに次の数式を入力して下さい。
=IF($C2="","",$F$2)
次に、Sheet2のB2セルに次の数式を入力して下さい。
=IF($C2="","",$G$2)
次に、Sheet2のD2セルに次の数式を入力して下さい。
=IF($C2="","",Sheet1!$D:$D,MATCH($C2,Sheet1!$C:$C,0)))
次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に、Sheet1のリストの行数を上回るのに充分な行数となるまで、貼り付けて下さい。
以上で準備は完了で、後はSheet2のF2セルに地区を、Sheet2のG2セルに班を入力すると、Sheet2のA列~D列に、抽出されたデータが、番号順に表示されます。
どうもありがとうございます!
とても丁寧に式まで載せていただいて助かりました。
sheetをもう一つ使うのですね。
切り取りや削除を行う場合にも対応し、且つ、C列の番号が順不同に並んでいたり、欠番がある場合にも、
番号順に表示される、というのは大変ありがたいです。皆関数がいろんなところを参照してるというのを
あまり理解せずにジャンジャンいじるので困ります。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
大変参考になりました。心より感謝申し上げます。m(__)m
No.6
- 回答日時:
配列数式を使用すると再計算に時間がかかりシートの動きが重くなるので、表示データ数が多いとあまりお勧めできませんが、以下のような数式の方が計算負荷が少なそうです。
たとえば、以下のような関数を入力し、右方向に5つ下方向に適当数オートフィルすればご希望のデータを表示できます。
=INDEX(Sheet1!A:A,SMALL(INDEX(ISERROR(FIND($F$2&"-"&$G$2,Sheet1!$A$2:$A$1000&"-"&Sheet1!$B$2:$B$1000))*1000+ROW($A$2:$A$1000),),ROW(A1)))&""
数式が多いと計算負荷が高くなることを考慮すると、検索条件のA列とB列は表示する必要が無いので実用的にはC列とD列を表示する数式だけでよいと思います。
どうしても必要なら、D列のデータが「""」でない場合は「F2」セルを返すような数式にしてください。
また、上記の数式は数字データを文字列として表示していますので、数字データとして表示したい場合は、数式の最後の「&""」を削除して、セルの書式設定をユーザー定義にして、「0;;;@」と入力して「0」を表示しない設定にしてください。
どうもありがとうございます!
とても丁寧に式まで載せていただいて助かりました。
なるほど、C列とD列を表示する数式だけにすることで負荷を軽くできるのですね。
&の使い方も初めて知りました。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
大変参考になりました。心より感謝申し上げます。m(__)m
No.5
- 回答日時:
こんにちは!
すでに回答は出ていますので、参考程度で・・・
↓の画像のようにSheet1に作業用の列を設けています。
作業列E2セルに
=IF(A2&B2=Sheet2!$F$2&Sheet2!$G$2,ROW(),"")
という数式を入れ、フィルハンドルの(+)マークでダブルクリック、またはオートフィルで下へずぃ~~~!っとコピーしておきます。
そして、Sheet2のA2セルに
=IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!$A:$D,SMALL(Sheet1!$E:$E,ROW(A1)),MATCH(A$1,Sheet1!$A$1:$D$1,0)))
という数式を入れ、オートフィルで列方向と行方向にコピーすると
画像のような感じになります。
以上、参考になれば良いのですが・・・m(__)m
どうもありがとうございます!
とても丁寧に式まで載せていただいて助かりました。
細かい操作まで教えていただいてありがたいです。
関数の使い方もいろいろあるのですね。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
大変参考になりました。心より感謝申し上げます。m(__)m
No.4
- 回答日時:
エクセルについて、関数しか知らず、関数ならやさしいと思っているように見えるが、層ではない。
エクセルの関数は、条件に夜抽出には不向きだ。
ーー
エクセルを少し経験すれば
フィルタオプションの設定
ピボットテーブル
と言う便利な、ソフト(メニューになっているが)が付いていることを知るはず。
其れでやるのが速く確実。
ーーー
同じことを繰り返すなら、マクロの記録を採って、条件部分の変え方を勉強し、実行させる手もある。
ーー
関数では条件付抜き出しの問題は
Googleででも、「imogasi方式」で照会すれば、沢山の質問と回答例があり、「imogasi方式」以外の解き方も載っている。
私のimogasi方式でやれば、(作業列を使うが、式が比較的理解しやすいかと思う)本件の場合の作業列の式は
例データA-D列( ソートされている必要はない)
地区班番氏名作業列
1 11岩井雅功1
1 12湯浅将也2
1 13滝沢由宇3
1 21根本さやか
1 22近藤守
1 23永島ひろみ
1 24小峰遥
作業列F列のF2セルに
=IF(AND(A2=1,B2=1),MAX($F$1:F1)+1,"") 地区=1、班=1の抜き出しの場合
と入れて下方向に式を複写
その後別シートに該当データを持ってくる式は、上記WEBを見てください。
どうもありがとうございます!
imogasi方式で検索して結構読ませていただきましたが、見た中で条件2つ以上のものが見つけられず、
しかも応用力もないもので、こちらで質問させていただきました。
ソートされている必要はないのですね。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
心より感謝申し上げます。m(__)m
No.3
- 回答日時:
関数に縛られないなら、下記の方法があります。
1.「ピボットテーブル」を使用
http://www.officepro.jp/exceltips/pivot/
2.「フィルタオプションの設定」を使う。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
どうもありがとうございます!
実は使い手が、あまり慣れてない人で、ゆくゆくはピボットテーブルや
フィルタオプションの設定なども覚えてもらおうと思っていますが、
とりあえずは区と班を入力すればドンと出る方式にしようと思っています。
参考URL、よく読ませていただきます。
No.1
- 回答日時:
シート2のA2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(SUMPRODUCT((Sheet1!$A$1:$A$1000=$F$2)*(Sheet1!$B$1:$B$1000=$G$2)*(Sheet1!$C$1:$C$1000=ROW(A1))*ROW(A$1:A$1000))=0,"",INDEX(Sheet1!$A$1:$D$1000,SUMPRODUCT((Sheet1!$A$1:$A$1000=$F$2)*(Sheet1!$B$1:$B$1000=$G$2)*(Sheet1!$C$1:$C$1000=ROW(A1))*ROW(A$1:A$1000)),COLUMN(A1)))
どうもありがとうございます!
とても丁寧に式まで載せていただいて助かりました。
チラ見ではよく理解できないので、よく見て勉強させていただきます!
心より感謝申し上げます。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
数式が入ったセルを含めて、数...
-
エクセルで合計欄を結合し、左...
-
エクセル:横長の表を改行して...
-
エクセルで小数を含む数値の抽出
-
Excelのセル内文字の並び替えに...
-
別のセルに値が入力されたら、...
-
エクセルで1列全部10倍したい
-
エクセルで表示されている数字...
-
入退社日より各月末の在籍者数...
-
エクセルの複数のセル均等に分...
-
エクセルで曜日に応じた文字を...
-
エクセルでセルの値分の個数の...
-
Excelでの検索結果を含む行だけ...
-
【EXCEL】指定したセルの値を他...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
別のセルに値が入力されたら、...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセル セル内の文字数を超え...
-
エクセルのsumifでかけ算してか...
-
エクセルで小数を含む数値の抽出
-
時間を「昼間」と「夜間」に分...
-
EXCELの特定セルを編集不可・コ...
おすすめ情報