- 締切済み
空白セルを無視してデータを上から順番に抽出・表示したい
こんにちは。エクセルで困っています。 仕事で案件管理表をエクセルで作って運用しています。この管理表の中にはイニシャル案件もランニング案件も一緒になっているため、ランニング案件分だけ別のシートで管理する必要が出てきました。 元となっている管理表には現在抱えている全案件情報を入力するので、ランニング案件用のシートにランニング案件の情報のみ自動的に反映させたいと思っています。 元管理表の方にはランニング案件のみ「○」が表示されるように式を組みました。別シートにはこの「○」印が表示された行の情報のみ飛ばすようにしたいのですが、どうしてもうまくいきません。 どのような式を組むといいかご教示頂ければうれしいです。 ちなみに、これまでたくさん検索してみて、「COUNT」関数「INDEX」関数、ROW「関数」、「SMALL」関数などを組み合わされた式を見つけることはできたので、セル番号や検索範囲を自分仕様に直してみましたが、「#VALUE!」エラー、「#NUM!」エラーになってしまい、うまく動かす式にできませんでした。 元データでは下記のような構造になっています。 ================================================ ■Sheet1 1 ○○○会社 □□□案件 \500 2 △△△会社 ■■■案件 \100 ○(←ランニング案件チェック) 3 ×××会社 □□□案件 \500 4 ○○○会社 ◇◇◇案件 \400 5 ○○○会社 ◆◆◆案件 \300 ○ 6 ▼▼▼会社 ■■■案件 \100 ○ : : : ================================================ こういった情報の表があり、これを○印がついてる案件のみ 上から順番に別シートへ飛ばしたいと思っています。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
これはimogasi方式で出来ます。Googleで「imogasi方式」で照会すれば、たくさん記事が出ます。私の回答がimogasi方式ですが、他の方の回答の中に >COUNT」関数「INDEX」関数、ROW「関数」、「SMALL」関数などを組み合わされた式を見つけることはできたので の回答がありますが、ごくエクセル関数の熟練者でないと理解できず、従って式を自分の問題に合わせて修正も出来ないと思います。 どうしてもと言うなら、>エラーになってしまい、の式を質問に出して、式の誤りの箇所を回答者に指摘してもらってください。imogasi方式は下記でF列を作業列に使う欠点がありますが、考えかたは単純です。 ーーー 例データ Sheet1 第2行目から 1 ○○○会社 □□□案件 \500 1 2 △△△会社 ■■■案件 \100 ○ 31 ○○○会社 □□□案件 \500 1 2 △△△会社 ■■■案件 \100 ○ 3 ×××会社 □□□案件 \500 2 4 ○○○会社 ◇◇◇案件 \400 3 5 ○○○会社 ◆◆◆案件 \300 ○ 6 ▼▼▼会社 ■■■案件 \100 ○ F2の式は =IF(E2="",MAX($F$1:F1)+1,"") この式を最下行まで複写。 この式は、上記のように○以外の行に上の行から連番を振っている。 ーー その連番を使って、Sheet2に抜き出す。 Sheet2でA2に =INDEX(Sheet1!$A$1:$E$10,MATCH(ROW()-1,Sheet1!$F$1:$F$10,0),COLUMN()) と入れてE2まで式複写。 Sheet1のF列の最高値行数(この場合3行)まで下方向に式複写。 結果 1 ○○○会社 □□□案件 \500 0 3 ×××会社 □□□案件 \500 0 4 ○○○会社 ◇◇◇案件 \400 0 関数で条件による抜き出しは、複雑になるので、フィルタ、VBAがおすすめ。
- mitarashi
- ベストアンサー率59% (574/965)
オートフィルタで十分だとは思いますが、頭の体操で関数でやってみました。 元データがSheet1にあるとします。 Sheet2に下記のように式を入れます。 A B C D E 1 2 2 △△△会社 ■■■案件 100 ○ 3 5 ○○○会社 ◆◆◆案件 300 ○ 4 6 ▼▼▼会社 ■■■案件 100 ○ 一行目は空けて下さい(A列の式を複写して使うための苦肉の策) A2の式:=MATCH("○",INDIRECT("Sheet1!$D$"&(A1+1)&":$D$100"),0)+A1 以下、下方に複写($100の所は余裕を持たせて適当な大きな値に設定して下さい。) B2の式:=INDEX(Sheet1!$A$1:$D$6,$A2,COLUMN(A2)) 以下、下方・右方に複写(元データの範囲は適宜変更して下さい) Sheet1にデータが無い行は#N/Aだらけになりますので、 ご自分でエラー処理を付け加えるか、条件付書式でフォントが白色になる設定をしてください。 ※作業列を用いるのが嫌なら関数の達人の回答をお待ち下さい。
お礼
ご回答ありがとうございました。 mitarashiさんのアドバイスをもとに作成してみました。 何とかやれました!!ありがとうございました。 また宜しくお願い致しますm(_ _)m
- merlionXX
- ベストアンサー率48% (1930/4007)
エクセルにはオートフィルターという便利な機能があります。 Sheet1の表にオートフィルターを設定し、○をふった列で、○を指定すれば「○」印が表示された行の情報のみ表示されますので、それをコピーして別シートに貼りつければOKです。 http://www11.plala.or.jp/koma_Excel/contents3/mame3021/mame302101.html
お礼
ご回答ありがとうございましたm(_ _)m
お礼
ご回答ありがとうございました。非常に参考になりました。 でもやっぱり・・・imogashi方式挑戦してみましたが・・・やっぱり難しかったです。 ありがとうございました。 また宜しくお願い致します。