• ベストアンサー

エクセルでデータのある行だけを他のシートに抽出する

エクセルで、氏名のある行だけ残し「0」「空欄」の行はのぞく事をリンクのような形で自動的に抽出する方法があったら教えて下さい。 例 1行目 210 伊藤 2行目 211 山田 3行目 212 4行目 213 0 5行目 214 渡辺     ↓   別シートへ     ↓ 1行目 210 伊藤 2行目 211 山田 3行目 214 渡辺

質問者が選んだベストアンサー

  • ベストアンサー
noname#182251
noname#182251
回答No.1

「自動的」が今ひとつ良く判りません 1.元のシートに新しい行が追加される度に「自動的」に別シートへ 2.マクロボタンなどを押すと別シートへ 上記1.であれば判りません。2.であればマクロ(VBA)はさほど難しくないと思います。しかし手動で「名前列」でソート、部分コピー、「番号列」で再ソートでも大差ないような。

syunsaku999
質問者

お礼

不十分な質問で住みませんでした。この場合、マクロを使わないでリアルでという事になるでしょうか。または、保存時という事になると思います。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

(例データ)Sheet2のA1:B9(C列は関数式を入れた結果) 210 伊藤 1 211 山田 2 212 0 2 214 2 216 近藤 3 217 鈴木 4 219 0 4 220 4 221 大田 5 (関数式1)Sheet2のC1に=COUNTA($B$1:B1)-COUNTIF($B$1:B1,0)と入れて下に複写します。 結果は上記C列のとおり。 (関数式2)Sheet3に行く A1に=OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,0)と入れて、下方向に複写。 B1に=OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,1)と入れて下方向に複写。 (結果)Sheet3のA1:B5に 210 伊藤 211 山田 216 近藤 217 鈴木 221 大田 (その他) Sheet2のC列の下の方に0が出るが、その防止法 C1に=IF(A1="","",COUNTA($B$1:B1)-COUNTIF($B$1:B1,0)) Sheet3のA、B列の下の方に#N/Aが出るが、その防止法 A1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,0)) B1に=IF(ROW()>MAX(Sheet2!C:C),"",OFFSET(Sheet2!$A$1,MATCH(ROW(),Sheet2!$C$1:$C$30,0)-1,1)) (注) Sheet2,Sheet3のそれぞれデータ開始行によって、関数式の変更が必要です。

syunsaku999
質問者

お礼

ありがとう御座います。やってみますが考えていたのと少し違うと思います。手数をかけました。

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.3

作業列を使ってよければ、 A列を作業列、B列に番号、C列に名前が入っていて、リストの範囲が1行目から20行目まで、元データがSheet1、抽出データがSheet2とした場合、 Sheet1のA1に =IF(OR(C1="",C1=0),"",1) A2に =IF(OR(C2="",C2=0),"",IF(COUNTIF($C$2:C2,C2)=1,MAX($A$1:A1)+1,"")) として、A2を以下コピー。 Sheet2のB1に =IF(MAX(Sheet1!$A1:$A20)<ROW(A1),"",VLOOKUP(ROW(B1),Sheet1!$A1:$C20,COLUMN(B1),FALSE)) として、右と下にコピー。 とすればよいと思います。作業列は非表示にしたければ、右クリック→表示しないで隠して下さい。 なお最初のSheet1のA1に入れる =IF(OR(C1="",C1=0),"",1) は、表がワークシートの2行目以降から始まる場合は、それ以下の式と同様で構いません。 また、ROW(A1)、COLUMN(B1)はそれぞれ、セルA1の行番号(=1)、セルB1の行番号(=2)を表していますが、表の1行目、2列目を参照する式に使っていますので、表が2行目以降の場合でもそのまま(特にROW(A1)の「1」とCOLUMN(B1)の「B」は変えずに)使ってください。

syunsaku999
質問者

お礼

ありがとう御座いました。早速試してみます。

  • hakone
  • ベストアンサー率54% (40/73)
回答No.2

一行目にタイトルが必要ですが、 オートフィルタをかけて、 オプションで 「0」と「等しくない」 and 「(空欄)」と「等しくない」    ↑空欄、何も書かない。 として別のシートにコピーしてみてはいかがでしょうか? 「自動的に」というのがどこまで自動なのか、 マクロを使うのは問題ないのかなどによって 回答が変わってきます。 ・たとえば、Sheet1に変更があったら、リアルタイムで  変更される必要があるのか? ・Sheet2をアクティブにしたときに更新されればよいのか? ・ボタンを押したときに更新されればよいのか? ・それとも「リンクのような形」というのはマクロを  つかわないという意味なのか? など

syunsaku999
質問者

お礼

不十分な質問で住みませんでした。この場合、マクロを使わないでリアルでという事になるでしょうか。または、保存時という事になると思います。

関連するQ&A