• ベストアンサー

マクロの行削除の記述の仕方

AI列の6行目からデータが入っています。 AI列にk000000が入っている行をすべて削除したい。 そのマクロの記述の仕方を教えてください

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

  • ベストアンサー
  • Xen
  • ベストアンサー率75% (15/20)
回答No.3

AI列のデータが空セルなど無く連続してるのかで変わりますが、連続してるのであれば単純に以下でいいかもしれません。 Sub Delete_Row()  Range("AI6").Activate  Do While ActiveCell.Text <> ""   If ActiveCell.Text = "k000000" Then    Selection.EntireRow.Delete   Else    ActiveCell.Offset(1, 0).Activate   End If  Loop End Sub その他の条件があるなら上記をカスタマイズしてみて下さい。

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

その他の回答 (2)

noname#79209
noname#79209
回答No.2

どうしてもマクロでなくてはいけないのでしょうか? 1回限りのことで良いのなら、マクロではなく以下の方法は如何でしょう。 1. 5行目が列タイトルであれば、AI5(5行目のタイトルならどのセルでも良い)をアクティブセルにする。 2. 「データ」->「フィルタ」->「オートフィルタ」を設定。 3. AI5の「下向きの三角形」をクリックし、「k000000」を選択。 4. 「k000000」が入った行のみが選択されるので、行番号上でドドラッグして「k000000」が入った行を選択。 5. そのまま、「編集」->「行の削除」をクリック。

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

Option Explicit Sub 消す()   '可変項目   '------------------------------------------------   Dim xlsシート    As Excel.Worksheet   Dim str消対象列   As String   Dim str消対象文字  As String   Dim int消対象開始列 As Integer      Set xlsシート = ThisWorkbook.Worksheets(1)   str消対象列 = "AI"   str消対象文字 = "k000000"   int消対象開始列 = 6   '------------------------------------------------         Dim rng消す対象エリア  As Range   Dim col消す対象     As Collection         '消す対象となる範囲を取得する   Set rng消す対象エリア = 取得_消す対象エリア(xlsシート, str消対象列, int消対象開始列)   If (rng消す対象エリア Is Nothing) Then     Call MsgBox("データが範囲内に存在していない", vbCritical)     Exit Sub   End If      '消す対象となるデータのセルを取得する   Set col消す対象 = 取得_消す対象(rng消す対象エリア, str消対象文字)   If (col消す対象.Count < 1) Then     Call MsgBox("範囲内に消対象文字列が見つからない", vbCritical)     Exit Sub   End If      '実行   Call 消す実行(xlsシート, col消す対象)      Call MsgBox("終了", vbInformation) End Sub Private Sub 消す実行(p_xlsシート As Excel.Worksheet, col消す対象 As Collection)   Dim strRows()  As String   Dim strWk    As String   Dim intCount  As Integer   Dim i      As Integer      intCount = col消す対象.Count      If (intCount < 1) Then     Exit Sub   End If      ReDim strRows(1 To intCount)   For i = 1 To intCount     strWk = col消す対象(i).Row     strRows(i) = strWk & ":" & strWk   Next i      p_xlsシート.Range(Join(strRows, ",")).Delete End Sub Private Function 取得_消す対象(p_rang消す対象エリア As Range, p_str消対象文字 As String) As Collection   Dim rngWk  As Range   Dim colRet As Collection      '返しコレクション初期化   Set colRet = New Collection      'まず検索する   Set rngWk = p_rang消す対象エリア.Find(p_str消対象文字)   '見つからない場合は終了   If (rngWk Is Nothing) Then     GoTo PGMEND   End If      'コレクションに追加   colRet.Add rngWk      Do     '次を検索     Set rngWk = p_rang消す対象エリア.FindNext(rngWk)     '最初に見つかったものと一緒であれば抜ける     If (rngWk.Row = colRet(1).Row) Then       Exit Do     End If          'コレクションに追加     colRet.Add rngWk        Loop PGMEND:   Set 取得_消す対象 = colRet End Function Private Function 取得_消す対象エリア(p_xlsシート As Excel.Worksheet, p_str消対象列 As String, p_int消対象開始列 As Integer) As Range   Dim rng最終セル As Range   Dim int行    As Integer   Dim int列    As Integer      'データエリアを得る   int列 = p_xlsシート.Cells(1).SpecialCells(xlLastCell).Row   int行 = p_xlsシート.Columns(p_str消対象列).Column      '開始列まで、データがが存在していない   If (int列 < p_int消対象開始列) Then     Exit Function   End If      '対象となる範囲を返す   With p_xlsシート     Set 取得_消す対象エリア = .Range(.Cells(p_int消対象開始列, int行), .Cells(int列, int行))   End With End Function

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

関連するQ&A

  • VBAマクロ抽出の記述

    A列からAH列の6行目からデーターベースが入っています。 条件としてAH列6行目の欄にKという文字で F列~AC列までのデータがブランク以外のデータを抽出したい。 このマクロの記述の仕方を教えてください。

  • 行削除のマクロ

    B列~F列にデータが入っていてB列の最終行の下セルを選択しクリップボードのデータを貼り付けた後、貼り付けたデータの最初の3行を削除するマクロを作っています。 Sub Macro1() ''Worksheets("Sheet1").Activate ' addrw = Range("b65536").End(xlUp).Offset(1).Row Cells(addrw, 2).PasteSpecial end sub これでB列の最終行の下にデータを貼り付けることまで出来たのですが貼り付けた最初の3行の削除の仕方がわかりません。 いい方法があれば教えていただけないでしょうか。  例えばB列の10行目まで既に入力されていた場合、11行目からクリップボードのデータを貼り付け(ここまでは上のプログラムで出来ました。)、11行目から13行目を削除したいのですがどうしたらいいでしょうか?

  • 行を削除するマクロ2

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

  • 行を削除するマクロ

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

  • excel2000マクロ記述

    シート名JISEKIの中のF列には2行目から4桁のコードが入っています。 X列の2行目から数値データが入っています。 条件としてF列のコードがA310又はA505で、X列の数値がマイナスの場合は、 R列からW列の数値データを非表示にしたい。 これをマクロ化したいのですが、記述の仕方を教えてください。

  • エクセル マクロの記述をご教示下さい。

    宜しくお願い致します。 ● Aファイルに下記のようなマクロを記述したい。 ・BファイルのB列の6行目から2000行に入力されている、データを 削除する。 ・出来れば、人為的にBファイルは、立ち上げない状態で削除したい。 ・マクロを実行することによって、自動的に立ち上がるのは結構です。 ・また、削除後、Bファイルは立ち上がっていても結構です。 ご指導のほど宜しく御願い申し上げます。

  • 重複行削除のマクロ

    重複行を削除するマクロを作っていますが、うまくいきません。 2行目にタイトルが入っていて、3行目以降が必要なデータになります。 この中でA列が一致しているデータ行を削除したいと考えており、 重複データが削除された後、タイトル行がなぜか一番下の行にはりついてしまいます。 どなたか詳しい方助けてください!!!よろしくお願いします。 ちなみに以下が現在使用しているVBAコードです。 =============================================================== Sub GoodRemoveDuplicates() 'A列にデータが入力されており、そのデータを並べ替えた後、 '重複するデータが含まれている行を削除するマクロ Worksheets("貼り付け用用マクロ").Range("A1").Sort _ key1:=Worksheets("貼り付け用用マクロ").Range("A1") Set currentCell = Worksheets("貼り付け用用マクロ").Range("A1") Do While Not IsEmpty(currentCell) Set nextCell = currentCell.Offset(1, 0) If nextCell.Value = currentCell.Value Then currentCell.EntireRow.Delete End If Set currentCell = nextCell Loop End Sub ===============================================================

  • 特定の文字がある行以外を削除するマクロ

    特定の文字がある行以外を削除するマクロを作りたいです。 データの範囲はA1からK50000 E列にS01、S02、E03と書いてあるセル以外の行を削除したいです。 E列にはS01~S50、E01~E100というような数値があります。 どうぞよろしくお願いします。

  • アクティブになっている行をマクロで削除したい

    特定の文字の入っている行とそれ以下の行全部を削除したいのですが どうしたらよいでしょうか 例えば"小計"の入っている行から下の行を削除したいのですが 行の位置はいつも違っています セルの位置は検索で分かりますし行の削除はShift+スペースで消し それより下はShift+ctrl+方向キー+delで出来るのですが それだとマクロで実行するときいつも同じ行を消してしまいます どの位置にも関係なくアクティブセルの含まれている行とそれ以下の行を マクロで削除するにはどのように記述すればいいですか

  • マクロの記述について

    エクセルのマクロについて教えてください。 A列には氏名B列にはコードが入っておりC列からG列に数字が入ります。 C列からG列までのすべてが0の時にその行を削除したいのです。 よろしくお願いします