- ベストアンサー
エクセル 複数行を別のシートに摘出
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
実際のリストに入力されているデータ(数字データはなく文字列だけのデータ)や、表のレイアウト(例示のようにリストの中に完全な空白行があるなど)、あるいは抽出するデータ(A列の番号も飛び飛びでそのまま抽出するのですか?)など、によって、最も簡便と思われる操作法が異なります。 もしC列にはデータが埋まっており、A列の番号は単なる連番で(ID番号などではない)、抽出するデータで新たに連番を振りたいなら(またはこの番号は抽出する必要が無いなら)、A列の番号の列には「=IF(C2="","",SUBTOTAL(3,$C$2:C2))」のような関数を入れておき、オートフィルタで○を抽出し、その結果をVLOOKUP関数で別シートに自動抽出するのが最も簡単です(元データがSheet1の場合)。 =IFERROR(VLOOKUP(ROW(1:1),Sheet1!$A:$L,COLUMN(A:A),0),"") また、ご質問の通りリスト内に空白行があり、B2セル以下の○の付いた列を抽出したいなら、データ範囲が大きくなると動きが重くなるので使いにくくなりますが、以下のような関数を使って表示することもできます(B列以降を抽出する場合、この式を入力して下方向および右方向にオートフィル)。 =INDEX(Sheet1!B:B,SMALL(INDEX((Sheet1!$B$2:$B$20<>"○")*10000+ROW($B$2:$B$20),),ROW(1:1))) 抽出データがすべて文字列なら数式の最後に「&""」を追加してください。 日付を含む数値データが含まれている場合は、表示データ範囲を選択してセルの書式設定でユーザー定義にして「0;-0;;@」のように設定するのが簡単かもしれません。 #ExcelなどのOfficeソフトはバージョンによって使用できる機能や操作方法が大きくことないますので、質問の際には必ずバージョンを明記するようにしましょう。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1にお示しの表が有るとしてL2セルには次の式を入力して下方にドラッグコピーします。 =IF(B2="","",COUNTIF(B$2:B2,"○")) お求めの表をシート2に表示させるとしてシート2の2行目にはシート1の項目名を並べます。 A3セルには次の式を入力してK3セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$L:$L),"",INDEX(Sheet1!$A:$K,MATCH(ROW(A1),Sheet1!$L:$L,0),COLUMN(A1)))
お礼
みなさんすごいですー たすかりました。
- ji-young
- ベストアンサー率24% (25/101)
簡単に1行目でフィルタをかけ、B列のプルダウンで〇を選べば欲しい表になります。 それをマウスで選択して別シートにコピーする。
お礼
ありがとうございました。 フィルタが一番簡単でせいかくですよねw
- keithin
- ベストアンサー率66% (5278/7941)
A2セルに =IF($B$1=B2,ROW(A1),"") 若しくは =IF($B$1=B2,COUNTIF($B$2:B2,B2),"") と記入 別シートなどのA1セルに =IF(ROW(A1)>COUNT(Sheet1!A:A),"",SMALL(Sheet1!A:A,ROW(A1))) と記入 B1セルに =IF($A1="","",VLOOKUP($A1,Sheet1!$A:$Z,COLUMN())) と記入、右にコピー、下にコピー。
お礼
ありがとうございました。 間違えてしまいました。 B列に”○”が記入されたらが正しいです^^ またよろしければ教えてください。 ありがとうございます
補足
うはーーっと B列に”○”が記入したらでした;; B1って書いてしまいました。 すみません。
お礼
ありがとうございました。 やってみますーw