- ベストアンサー
条件に一致する行データを別シートに抽出する方法
- シート「0」に入力されたデータセルの中から条件に一致する数字を抽出し、目的のシートに表示する方法を教えてください。
- 例えば、シート「0」のB列に6という数字が入力されていた場合、同じ行のA、C、Dのデータを全てシート「6」のA、B、Cに表示させたいです。
- 他の数字についても同様に、該当するシートに該当する数字の全てを表示したいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.3です。 補足欄について。 D2に、 =SUM(C$2:C2) と入力して、下の行へコピーします。 この場合は、C列が空白の場合も累計が表示されます。 C列が空白の場合は、累計を表示しないのなら、D2に、 =IF(LEN(C2),SUM(C$2:C2),"") と入力して、下の行へコピーします。 ちなみに、C列の総計は、 =SUM(C:C) で表示されます。
その他の回答 (3)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 [1]シートのA2に、 =IF(COUNTIF('0'!$B$2:$B$30,1)>=ROW(A1),INDEX('0'!A:A,SMALL(IF('0'!$B$2:$B$30=1,ROW($B$2:$B$30)),ROW(A1))),"") と入力して、[Ctrl]+[Shift]+[Enter]で確定します。 (数式の両端に「{}」が付いて、配列数式になります。) 次にB2に、 =IF(COUNTIF('0'!$B$2:$B$30,1)>=ROW(A1),INDEX('0'!C:C,SMALL(IF('0'!$B$2:$B$30=1,ROW($B$2:$B$30)),ROW(A1))),"") と入力して、[Ctrl]+[Shift]+[Enter]で確定、 同様にC2に、 =IF(COUNTIF('0'!$B$2:$B$30,1)>=ROW(A1),INDEX('0'!D:D,SMALL(IF('0'!$B$2:$B$30=1,ROW($B$2:$B$30)),ROW(A1))),"") と入力して、[Ctrl]+[Shift]+[Enter]で確定します。 そうしたら、A2:C2を適当に下の行へコピーします。 数式中に2箇所ある「1」が条件なので、各シートでこの部分を変更して下さい。 また、INDEX関数の第1引数は表示させる[0]シートの列を示します。 質問の例だと、 [0]→[1]シートで、 A列→A列 C列→B列 D列→C列 になっています。 実情に合わせて適宜変更して下さい。 それから、今回は元シートの行数が少ないですが、多い(4桁以上くらい)と、処理が重くなります。
お礼
早々の回答ありがとうございます。 理解しにくい質問の仕方で申し訳ありませんでした。 maruru01さんの回答を、あてはめてみる時間が夜遅くまでありそうもないので、まずは御礼の投稿だけ先にと書き込みをしております。 丁寧な説明をありがとうございます。 少々拝見してみただけでは理解ができない自分なので、PCに向かい合った夜にじっくりと考えて見ます。 又、完成に至らなかったら後ほど補足を投稿しますのでお時間がありましたら再度回答をよろしくお願いします。
補足
完璧です。私が望むものでした。ありがとうございます。 ただ、ぇえーと質問のシートやセルの表記がごちゃごちゃしてしまい申し訳ないのですが、最初の質問例で記入させていただきます。 このファイルを渡されたとき、シート「1」~「13」のD列には累計が欲しいようで 「ここまではやっておいたから後はヨロシク」と言わんばかりに足し算が入力してあります。 例として C D 2 =C2 3 C3+D2 4 C4+D3 5 6 最終トータル ここでmaruru01さんの配列数式を入力、各伝票シートで下の行までコピーしたところ、表示されえる行までは良いのですが、空白以降の行からはD列の表示が#VALUE!になってしまいます。最終累計が最下段まで表示されるにはどうすればよいのですか
- imogasi
- ベストアンサー率27% (4737/17069)
Shee1の未使用列に =B2&COUNTIF($B$2:B2,B2)を入れる。シート名+上(B2)からそのシート名が何個目かの数字が入る。 そのシート名のシートの第1行に =OFFSET(Sheet1!$A$1,MATCH("s"&ROW(A1),Sheet1!$B$1:$B$10,0)-1,2) sはシート名、Sheet1!$B$1:$B$10のところは、上記で言った「未使用列」記号で置換えてください。$b$10の10は質問では30になるでしょう。 式を下へ複写。 シートの数だけ、各シートに同様の式を設定。 朝時間が無いので説明不十分ですが済みません。
お礼
お時間の無い中を回答ありがとうございます。 理解しにくい質問の仕方で申し訳ありませんでした。 後ほど補足を投稿しますのでお時間がありましたら再度回答をよろしくお願いします。
補足
実は理解できない方法を依頼され困っていたのです。 各伝票をエクセルで作ったブックがあります。 それぞれの伝票が13種類あり各様式はほとんど同じです。 そのトータルとして「○×簿」Sheet1が存在します。 問題は本来各伝票からの集計であるトータルのSheet1に入力した伝票上のデータを 該当する各伝票に振り分けるというもののようです。 具体的に書きますと Sheet1 B C D E F 1 月 日 data1 data2 data3 2 ○ × 6 ア 1234 3 △ □ 6 イ 5678 4 × △ 2 ア 2583 ・ と入力されているとするとSheet1のD列数字が伝票番号で D2が『6』とするとSheet名「伝票番号6」に「月」「日」「data2」「data3」 を抽出する物だそうです。当然該当がなければ「空白」です。 Sheet名「伝票番号6」 B C D E 1 ○ × ア 1234 2 △ □ イ 5678 3 というようにSheet1のD列に『6』が入力されている行のデータを抽出し 該当の伝票Sheetに集計するという物です。 同じようにD列の数字が『2』だとSheet名「伝票番号2」に 「月」「日」「data2」「data3」が表示され伝票が逆に作成されるというものです。 よろしくお願いします。
- nishi6
- ベストアンサー率67% (869/1280)
質問がいまいち理解できていないかもしれません。 シート『0』 A B C D 1 data1 data2 data3 data4 2 式1 6 式 式 3 式 13 式 式 シート『1』 A B C D 1 data1 data2 data3 data4 2 あ い う 3 え お あ シート『2』 A B C D 1 data1 data2 data3 data4 2 か き く 3 け こ か シート『3』 : : こんな想定の元で、 シート『0』のセルA2に =IF($B2<>"",INDIRECT($B2&"!A"&ROW($B2)),"") として、他のセルにコピーします。 シート名は『0』、『1』、『2』、『3』・・・半角数値を想定しています。
お礼
早々の回答ありがとうございます。 理解しにくい質問の仕方で申し訳ありませんでした。 後ほど補足を投稿しますのでお時間がありましたら再度回答をよろしくお願いします。
補足
実は理解できない方法を依頼され困っていたのです。 各伝票をエクセルで作ったブックがあります。 それぞれの伝票が13種類あり各様式はほとんど同じです。 そのトータルとして「○×簿」Sheet1が存在します。 問題は本来各伝票からの集計であるトータルのSheet1に入力した伝票上のデータを 該当する各伝票に振り分けるというもののようです。 具体的に書きますと Sheet1 B C D E F 1 月 日 data1 data2 data3 2 ○ × 6 ア 1234 3 △ □ 6 イ 5678 4 × △ 2 ア 2583 ・ と入力されているとするとSheet1のD列数字が伝票番号で D2が『6』とするとSheet名「伝票番号6」に「月」「日」「data2」「data3」 を抽出する物だそうです。当然該当がなければ「空白」です。 Sheet名「伝票番号6」 B C D E 1 ○ × ア 1234 2 △ □ イ 5678 3 というようにSheet1のD列に『6』が入力されている行のデータを抽出し該当の伝票Sheetに集計するという物です。 同じようにD列の数字が『2』だとSheet名「伝票番号2」に「月」「日」「data2」「data3」が表示され伝票が逆に作成されるというものです。 よろしくお願いします。
お礼
ぉお~ずばらしい!ありがとうございます。 最初の不明瞭な質問にもこちらが望む以上の回答をしてくださり、補足にも関連しそうな事柄にも気配りしていただきありがとうございます。 ポイント発行が自由にできるならいっぱい付けさせて いただきたいぐらいです。 感謝してます。こんな親切な回答ははじめてです。 自分もmaruru01さんを手本として質問者に接していきたいと思います。