• ベストアンサー

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

次のような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

  • エクセルで不要な行を自動で削除する

    エクセルを使った表で下記の様なデータがあります。 A列は番号、B列は来歴で、一番最後の文字(A0000の場合はB)の行が最新のデータになります。 例えばA0000の場合は始めのデータは「スニーカー」「サンダル」でしたが、A改定で「パンプス」が加わり、 更にB改定で「スニーカー」と「パンプス」が無くなったので、最終のデータは「サンダル」だけになります。 自動でこの表を結果の様に、夫々の番号で最終の来歴だけを残す方法を教えて下さい。 行は4000行程あり、来歴は無しの物からJ位まであります。 又番号によってデータの行数も異なります。D列以降にもデータは入っています。     A    B    C    D   E 1  A0000  -  スニーカー 2  A0000  -  サンダル 3  A0000  A  スニーカー 4  A0000  A  サンダル 5  A0000  A  パンプス 6  A0000  B  サンダル 7  B0000  -  Tシャツ 8  C0000  -  スーツ 9  C0000  A  スーツ 10  C0000  A  ドレス 11  C0000  A  着物 12  D0000  -  靴下 13  D0000  -  ストッキング   :   : 結果(最終来歴だけのデータにする)     A    B    C    D   E 1  A0000  B  サンダル 2  B0000  -  Tシャツ 3  C0000  A  スーツ 4  C0000  A  ドレス 5  C0000  A  着物 6  D0000  -  靴下 7  D0000  -  ストッキング 現在並び替えて手作業で削除していますので、是非良い知恵をご教授下さい。

  • EXCELで約6000行の中から同じ行を削除。

    EXCEL初心者です。 約6000行のデーターの中から同じ名前の行を削除する方法を 教えていただけないでしょうか?   A    B   c   d   e  1  ○ 2  ○ ← 削除  3  ○ ← 削除 4  △ 5  △ ← 削除 よろしくお願いいたします。

  • エクセルまたはVBAで重複行を削除

    例えば、 A B 1 1 a 2 2 b 3 3 c 4 4 d 5 4 d 6 5 e 7 6 g 8 6 g といった表があるとします。 A列をキーに、昇順にされた一覧表です。 ここで番号が重複している行、この例では4行目と5行目、7行目と8行目がそうです。 こういった重複した行を検索して、行削除したいのですがどんな方法が可能でしょうか? 最終的にはVBAでのイベントになるでしょうが、それ以前にエクセルで前準備などしておくようなことは必要でしょうか? 表自体はかなり膨大な量のデータベースです。 よろしくお願いします。

  • excelでの対象範囲行削除

    excel2010 Aセルに入っている文字列で比較し、範囲抽出するマクロを作成しょうとしています。 何をやりたいかは、次の通りです。 Aセルに見出しがついた行を先頭に、次の見出しの1行前までを 行で抜出したいのです。 例 下記はAセルのデータのみを表示しています。 1行目 TEST_a 2行目  3行目  4行目 TEST_b 5行目  6行目  7行目  8行目 TEST_c 9行目  10行目 TEST_d 11行目 1~3行までを1つ目、4~7行を2つ目、8~9行を3つ目、10~11を4つ目で抜き出したいのです。 まず、4~7行目を抜き出すマクロは、 1~3行までを削除と下から8行目までを削除と考えました。 上から不要な部分を削除(1~3行までを削除)するマクロは下記の通りです。 Sub sample1() ' ' 上から下に検索 ' Dim x Range("A1").Activate '最初のセル Do Until ActiveCell.Value = "TEST_b" 'TEST_bが現れるまで x = ActiveCell.Value If x <> "TEST_b" Then 'TEST_bでないなら ActiveCell.EntireRow.Delete 'その行を削除する Else ActiveCell.Offset(1).Activate '次の行 End If Loop End Sub これは、正しく動作します。 上記を応用し、下から削除するマクロは次の通りとしました。 Sub sample2() '下から検索 Do Until ActiveCell.Value = "TEST_c" 'TEST_cが現れるまで y = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 'データ最下行取得 y = ActiveCell.Value If y <> "TEST_c" Then 'TEST_cでないなら ActiveCell.EntireRow.Delete 'その行を削除する Else ActiveCell.Offset(-1).Activate '次の行 End If Loop End Sub このsample2を実行すると、応答が返ってきません。 何が悪いのか、どの様にしたら正しく動作するのか教えていただきたく。(1) また、smple2だとTEST_cの行は残ってしまいます。 なので、下からTEST_cまでを削除するマクロは、 どの様に記述したらよいか教えていただきたく。(2) 以上2点、よろしくお願いします。 ※マクロは初心者です。いろいろWEBで調べてみたのですが、いきづまりました。

  • Excelで、不要な行を削除したいのですが。

    Excelで、不要な行を削除したいのですが。ただし、空白行といっても、リンク貼り付けしています。 ある、日計表3件をコピーして、別のシートにリンク貼り付けしました。31日分で、1800行位になります。その内の不要な行を削除したいのですが、宜しくお願いいたします。

  • EXCELの列と行はどこまであるのですか?

    単純な質問ですみません。 EXCELの列や行をスクロールさせると、どこまでも行きますが、 これは終点があるのでしょうか。 あるとすれば何列と何行が最後なのでしょうか。

  • 【マクロ等】4行ごとに行を消したいのですが…

    いつもお世話になっております。 最近Excelで作業をすることが多いのですが相手の会社より頂いたデーターがテンプレートの違い上読み込むと4行ごとにデータが表示されます。 (参考図) ■A B C D E F (1)100 (2) (3) (4) (5)200 (6) (7) (8) (9) (10)1000 … と言った感じで4行の空欄が入ってしまいます。 いつもこの4行を行の削除でマウスを右クリックして削除しているのですがデーター行が2000とかを超えると血の気が引きます。。。 どうにか一括で間4行を削除することはできないでしょうか? 必ずデータはA1からはじまり4行ごとに間が空きA5,A10…と数値が入る形です。 よろしくお願いします。

  • エクセルで下の空白行を削除したい

    エクセルで100行までの表を作成しました。何度か行削除や行挿入をしているうちに、その下に300行ほどの空白行ができてしまったようで、右にあるスライド(何というのか知りません)を下までもっていくと400行のところまで飛んでしまいます。100行のところはスライドのちょうど1/4位のところです。 本当はスライドを下まで持っていくと100行でストップしてくれれば作業をしやすいのですが、直す方法はあるのでしょうか。 300行分削除しても直りません。

  • エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ

    エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてください。 sheet1を印刷用ページ、sheet2をデータ用ページとしています。 sheet2は頻繁に追加や削除をするのですが、単純な =sheet1!A1 ですと、 sheet2に追加してもsheet1に追加されたデータが反映されない。 sheet2の行を1つでも削除するとsheet1のその行は#REF!というエラーに。 という状態です。下記内容に対応できる関数はあるでしょうか。 sheet2がこのような時 行  A あ B い C う D え sheet2Dに「お」を挿入すると sheet1がこのようになるように。 行  A あ B い C う D お E え また、B行を削除したらsheet1が 行  A あ B う C え となるように。 そして、可能ならばコピーのドラッグで複製できるようにしたいのですが・・・ 条件が色々ありますが、よろしくお願いします。

  • Excelで条件つき行削除について

    下記のようなExcelの表があるとします。    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 23 45 67 27 3 仕事B 45 24 65 33 4 小計 68 69 132 60 この状態のときはいいのですが、    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 0 0 0 0 3 仕事B 0 0 0 0 4 小計 0 0 0 0 上記のようにB4、C4、D4、E4がそれぞれ「0」のときに4行目を削除または行の高さを「0」にするマクロを組みたいです。 わかる方がいましたらよろしくお願いします。