• ベストアンサー

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

皆さんこんにちは。 お忙しいところ恐れ入ります。 以下の内容をVBAで実行したく色々やってみたのですが、思うように動きません。 もしお分かりになる方がおられましたらご教示の程ねがえませんでしょうか? 1.A列に”無作為な数値(例えば1から100)”と”空セル”がランダムに並んでいる。 2.このA列に、指定した数値(例えば3,7,15,23,50,88など色々)があった場合、  その指定した数値が書かれている行のみを行ごと削除したい。 以上です。 お忙しいところ恐れ入りますが、どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

A列にアタマから対象データが並んでいるなんて事は無くて,常識的に1行目はタイトル行で,2行目からデータが入っているとします。 「色々ある」数字をどういう風にエクセルに指示したいのか考えが無さそうなので,次のようにします。 sub macro2()  dim aa,a  aa = inputbox("削除したい数字(例:1,4,10)")  if aa = "" then exit sub  application.screenupdating = false  for each a in split(strconv(aa,vbnarrow),",")  range("A:A").autofilter field:=1, criteria1:=a  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  next  activesheet.autofiltermode = false  application.screenupdating = true end sub

yuutomo0908
質問者

お礼

お世話になります。 タイトル行の件、配慮が足りませんでした。 申し訳ありません。 教えていただいたやり方で目的が果たせました。 また、inputboxでその都度指定できると言うところは 全く考えておらず(マクロに記述していたので)、この点はとても使い易かったです。 お忙しい中本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 Sheet2のA列・A1セルから削除したい数値を入力しておきます。 そうした上で下のマクロを実行してみてください。 Sheet1のVBE画面にコードを貼り付けます。 Sub test() Dim i, j As Long Dim ws As Worksheet Set ws = Worksheets("sheet2") For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 ' ↑ データが2行目からあれば「to 1」の「1」の部分を「2」に変更 For j = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) = ws.Cells(j, 1) Then Rows(i).Delete End If Next j Next i End Sub こんな感じではどうでしょうか?m(__)m

yuutomo0908
質問者

お礼

お世話になります。 sheet2からデーターを呼び出して・・と言う回答ありがとうございます。 こうすると、マクロが使えない人でも「sheet2に書くこと」さえ教えておけば、 ずっと使ってもらえそうですね。 皆さん流石です。 今回は最初に回答をくれた方の「inputbox」利用をベストアンサーにしましたが、 tom04さんの回答も別の帳票で役立ちそうです。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBAでの行の削除について

    Excel VBAを使用して2行ずつ行の削除をし、1行残して(3行目を残す)また2行ずつ行の削除、1行残しす(6行目を残す)をループして行う方法が知りたいです。 イメージとしては以下のような感じです。 ━━【A】━━━━ 【1】あいうえお 【2】かきくけこ 【3】さしすせそ 【4】たちつてと 【5】なにぬねの 【6】はひふへほ 【7】まみむめも 【8】やゆよ 【9】らりるれろ ━━━━━━━━━ ↓マクロ実行後↓ ━━【A】━━━━ 【1】さしすせそ 【2】はひふへほ 【3】らりるれろ ━━━━━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • VBA 行の削除

    全くの初心者で、初めて質問させていただきます。 A列には、数字・空白・文字を入力したセルが混在しています。 そのA列の数字の内 0 のセルが入力されている行のみを削除するVBAの記述の仕方を教えて下さい。 宜しく御願い致します。

  • エクセルの行削除VBA

    次の条件を満たすエクセルVBAの記述を教えてください。 A列に「ページTOP」の文字がある行から文末までの行を削除 A列に「PROGRAM…」のある行と次の1行を残して「4:00~…」を含む行までを削除 (例 A10 PROGRAM… A11 AB A12 hij A13 tuy A14 4:00… ※A12~A14を削除 A1からA列に「PROGRAM…」のある行まで行削除 Excel2010/WindowsXP

  • 行を削除するマクロ2

    a列には0から2の数値が入っています。 2行目から、a列の数値が2かつ最下の行(この画像の場合は12行目)までを削除するマクロのvbaの構文を教えてください。 ただし、a列の数値がすべて2未満の場合、行は削除しないようにしてください。 削除するのは行全体で、a列だけではありません。 エクセル2010です。 どうぞよろしくお願いします。

  • 行を削除するマクロ

    a列には数値が入っています。 2行目から、a列の数値が最大かつ最下の行(この場合は12行目)までを削除するマクロのvbaの構文を教えてください。 削除するのは行全体で、a列だけではありません。 エクセル2010です。 どうぞよろしくお願いします。

  • エクセル 網掛けしてあるセルの行を残してそれ以外の行を削除するVBA

    windows-xp、エクセル2003を使っています。 エクセルデータがA列からU列まであります。 (1000件程かな、時々AA列まである時もあります) G列には、網掛けしてあるセルがあります。 そこで!! 網掛けしてあるセルの行だけを残して、網掛けがされていない行のデータを一気に削除する!というマクロ(VBA)を作りたいのですが、どうすればよいでしょうか? VBAまだ、よくわかっていないので、初心者レベルでわかりやすく教えてくださると助かります。 宜しくお願い致しますm(_ _)m

  • VBA アクティブ行の削除

    エクセルで、アクティブにしているセルの行のA列からL列のみを削除というマクロを組みたいのですが、どのように記述したらいいのでしょうか? アクティブなセルはA列~L列のどこにあっても、その行のA列-L列を削除というようにしたいです。 (例1) A1がアクティブだった場合、A1~L1が削除される (例2) B4がアクティブだった場合、A4~L4が削除される すみませんが、お分かりになる方がいましたらよろしくお願いいたします。

  • ExcelのVBAで複数行削除を行う場合

    Excel2007のVBAで複数行を削除する方法を教えて下さい。 Excel2003で使用していたマクロが使えなくなってしまいました・・・。 下記のようなExcelシートに対して複数行ずつ行を削除し、削除対象が無くなるまで 削除処理を行うか、指定した行まで削除処理を行うという事をしたいのですが うまく動きません。 例      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc1 2行目             ccc2 3行目             ccc3 4行目             ccc4 5行目 aaa2   bbb2  ccc1 6行目             ccc2 7行目             ccc3 8行目             ccc4 例に対しての結果      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc4 2行目 aaa2   bbb2  ccc4 例に対して、複数行(指定した行数ここでは3行)の削除を行いたいのですが、 単純に複数行(3行)ずつ削除していくのではなく。 1行目や5行目にあるように文字や情報が入力されているA列とB列の情報は 残しつつ、4行目のC列以降の列の情報はすべて活かしていくという事をしたいのです。 Excel2003の時に使用していたVBAは以下のものです。 Sub 行を削除するマクロ() Workbooks("xxxx.xlsx").Activate '処理を行いたいExcel ※1 n = n + 0 LastRow = 2138           '処理を終了させたい行 ※2 Sheets("Sheet1").Select '処理を行いたいシート ※3 Do Until (n > LastRow) Rows(n + 4).Delete Shift:=xlsiftUp '削除したい行指定 ※4 n = n + 3 Loop End Sub 皆様の良いアドバイスやお知恵をお貸しください。 よろしくお願いします。

  • エクセル VBAにて行削除をしたい…

    エクセル2003にて VBA初心者です。 A列1~100に101~200までに番号が振ってあります。 Z列に記入がない場合はその行を削除するVBAを教えてください。 例  A  B  C  D  E  F …… Z 1  101               文字有り 2  102               ブランク 3  103               ブランク 4  104               文字有り 5  105               文字有り … 99  199              文字有り 100  200              ブランク この様な場合2,3,100の行ごと削除をするという形式のものです。 また、この場合A列の番号も自動で変われば(104が102になる等)最高です。 詳しい方教えてください。よろしくお願いします。

  • 複数の画像をVBAでエクセルに貼り付ける方法

    VBA初心者です。 多数のJPG画像が指定のフォルダ内に保存してあります。 JPG画像には、img_001.jpg、img_002.jpg・・・というように連番の名前が記載されています。 EXCELファイルのA列のセルに入力されているランダムな数値に対応した画像が 同じ行のB列に表示するようにしたいと考えています。 (たとえば、A1のセルに1を入力したら、B1のセルにimg_001.jpgが表示される) このような操作を、VBAを使用して作成することはできるのでしょうか。

専門家に質問してみよう