- ベストアンサー
列内より指定文字の抽出
エクセル2007で日報作成し更に集計(月報)しています。月報のJ列には「量産」「試作」の何れかの文字が入ります、ほとんどが「量産」です。 「試作」の時の行にある情報をまるごと別シートに自動的にコピーさせたいのです、どのような関数を別シートに入れればよいか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.2さんの方法と似たような感じですが・・・ ↓の画像でSheet1に作業用の列を使っています。 作業列K2セルに =IF(J2="試作",ROW(),"") という数式を入れ、オートフィルで下へずぃ~~~!っとコピーします。 そして、Sheet2のA2セルに =IF(COUNT(Sheet1!$K:$K)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$K:$K,ROW(A1)))) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 尚、元データに空白がない場合は問題ないのですが、 もし空白があれば「0」が表示されると思います。 その場合は、当方使用のExcel2003の場合ですが メニュー → ツール → オプション の表示タブで 「ゼロ値」のチェックを外しておきます。 以上、参考になれば幸いです。m(__)m
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
月報のシート1仮にSheet1として1行目には項目名があるものとします。作業列をM列としてM2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(J2<>"試作","",MAX(M$1:M1)+1) 別のシートでは1行目をシート1と同じ項目名として、A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$M:$M,ROW(A1))=0,"",INDEX(Sheet1!$A:$L,MATCH(ROW(A1),Sheet1!$M:$M,0),COLUMN(A1)))
お礼
うまく行かなかった訳も理解でき、間違えていた個所も解りました。 tom04さんのやり方でもうまく行くようになりました、あらためてお二人に感謝します。
補足
有難う御座います、ご指示の通りやってみましたが#N/Aが出ます、参照セルを間違えているようです、少し粘ってみます、取敢えずお礼まで。
- keithin
- ベストアンサー率66% (5278/7941)
>どのような関数を別シートに入れればよいか Excel2007ではどこのセルでも構わないので =INDEX(月報!J:J,SMALL(IF(月報!$J:$J="試作",ROW(月報!J:J),9999),ROW(A1))&"" のように記入し,コントロールキーとシフトキーを押しながらEnterで入力し,下向けと横にコピーしておくと出来ます。 #関数でやるのはすぐに無理になります。しばらく使ってみた後は,上手に作業列を使って作業を見直してください。
補足
有難う御座います、好いところまでは行くのですが…実力不足で応用力にかけているんですね。 もう少しやってみます、取敢えずお礼まで。
お礼
ご丁寧な説明有難う御座いました。ご教示のようなサンプル表を作り試しました、うまくいきます、使用している表の構成を出来るだけ簡素化して試しましたがうまくいきません、月報のデータは日報のデータを INDIRECT関数で引いています、また総集計表として別のシートにもリンクさせています、何が影響しているか解りませんが、紐付きデータでなければうまくいく事は確認できましたので月報の構成要素をさらに簡素化してやってみます。有難う御座いました。