• ベストアンサー

エクセルの行削除について

次のような1000行ほどのエクセルの表があります。   A    B    C   D 1 始点   2 3 終点 消去 4 始点 5 終点 採用 6 始点 7  8 終点 消去   「始点」の行から次の「終点」の行までが1つのデータです。 データの最後に「消去」とあるデータを削除し、「採用」とあるデータだけ残したい。 サンプルでは、1行~3行、6行~8行を削除したい。 手作業以外で、簡単にできる方法をさがしています。 どなたかよろしくお願いします。

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

  • ベストアンサー
回答No.4

関数を使わない泥縄な方法で... 「始点」から「終点」の前までの行に、「終点」に入力されたデータが入れば、ソート等で簡単に削除できるのですから、下記手順で良いかと思います。 1) C8に   =IF(A8="終点",B8,C9)  を入力 2) C1までコピー 3) C列全体をコピーし、C1に「形式を選択して貼り付け」で「値」を選択し貼り付け 4) D1に =row()と入力して行番号を入力し、D8までコピー 5) D列全体をコピーし、D1に「形式を選択して貼り付け」で「値」を選択し貼り付け 6) C列でソートし、「消去」の行を削除 7) D列でソートし、元に戻す (中身としては、ほとんど 1) の式だけです)

Wesley
質問者

お礼

できました。ありがとうございました。 泥縄な方法は大好きです。 私もどうやって「消去」と「採用」をセルに埋め込むか泥縄な方法を考えていましたがこんな方法があったんですね。まったく思いつきませんでした。 どうもありがとうございました。

その他の回答 (3)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

マクロを組んでみました。 Sub 消去() Dim RowBegin As Integer Dim Row As Integer RowBegin = 1 While (Cells(RowBegin, 1).Value <> "") Row = RowBegin While (Cells(Row, 1).Value <> "終点") Row = Row + 1 Wend If Cells(Row, 2).Value = "消去" Then Rows(RowBegin & ":" & Row).Delete Shift:=xlUp Else RowBegin = Row + 1 End If Wend End Sub

Wesley
質問者

お礼

出来ました。助かりました。 マクロはあまり詳しくないですが、VBA にコピーして実行したらできました。結果も求めていた結果になっています。 こんなに早く、ほんとうにありがとうございました。

回答No.2

「データ」→「フィルタ」→「オートフィルタ」をONにする。 プルダウンから「オプション」→「消去,と等しい」にして一気に消します。

Wesley
質問者

お礼

ありがとうございました。

Wesley
質問者

補足

早速のお答えありがとうございます。 この方法ですと、消すことができるのは、「消去」と書かれた行だけで、消したい行が全部消えることにはならないと思います。 「始点」の行から次の「終点」の行までを1つのデータ集団として、「消去」を含むデータ集団を消したいのです。 サンプルでは、この方法では3行目と8行目が消えると思いますが、 1行~3行、6行~8行を消したいのです。 よろしくお願いします。

  • llalpple
  • ベストアンサー率17% (33/186)
回答No.1

  私なら、B列で並べ直し、集まった「消去」の列を削除します。 マウス操作にして3クリック程の作業です。  

Wesley
質問者

お礼

ありがとうございました。

Wesley
質問者

補足

早速のお答えありがとうございます。 この方法ですと、消すことができるのは、「消去」と書かれた行だけで、消したい行が全部消えることにはならないと思います。 「始点」の行から次の「終点」の行までを1つのデータ集団として、「消去」を含むデータ集団を消したいのです。 サンプルでは、この方法では3行目と8行目が消えると思いますが、 1行~3行、6行~8行を消したいのです。 よろしくお願いします。

関連するQ&A