ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

Excelマクロ覚書 ~データの削除編~

図書館で借りてきた某書籍の覚書です。

 

 


【空白のある行を削除する】

空白のあるセルがある行を指定して、削除すればよい。
空白のあるセルを指定するにはSpecialCellsメソッドを使う。

Rangeオブジェクト.SpecialCells(種類, オプション)

※種類

xlCellTypeComments

:コメントが含まれているセル

xlCellTypeConstants :定数が含まれているセル
xlCellTypeFormulas :数式が含まれているセル
xlCellTypeBlanks :空の文字列
xlCellTypeAllFormatConditions :表示形式が設定されているセル
xlCellTypeLastCell :使われたセル範囲内の最後のセル
xlCellTypeVisible :可視セル
xlCellTypeAllFormatConditons :条件付き書式が設定されているセル
xlCellTypeSameFormatConditions :同じ条件付き書式が設定されているセル
xlCellTypeAllValidation :入力規則の設定が含まれているセル
xlCellTypeSameValidation :同じ入力規則の設定が含まれているセル

 

※オプション

xlNumbers

:数値

xlTextValues :文字
xlLogical :論理値
xlErrors :エラー値
Range("D3:D15").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'D3~D15の空白セルを取得する'

 

【重複データを削除する】

重複データを削除するには、RemoveDuplicatesプロパティを使う。

Rangeオブジェクト.RemoveDuplicate Columns:=チェックする列, Header:~タイトル行

Range("D3:D15").RemoveDuplicate Columns:=Array(1, 2, 3, 4)) 'D3~D15の表の重複データを削除する'

 

【余分な空白を削除する】

余分な空白を削除するには、Trim関数を使う。

Trim(文字列)

Dim i As String

i = 4
Do Until Range("B" & i).Value = ""
  Range("B" & i).Value
= Trim(Range("B" & i).Value) 'D3~D15の表の重複データを削除する'
i = i + 1
Loop

 

【数値のみ削除する】

指定した値が数値かどうかを判定するには、Numeric関数を使う。

isNumeric(値)

数式を含むかどうか判定するには、HasFormulaプロパティを使う。

Rangeオブジェクト.HashFormula

※種類

True

:数式を含む

False :数式を含まない
Dim Temp As Range  '対象セルを処理する変数「temp」を作成する。'

For Each temp In Range("A15:H25")
   If isNumeric(temp.Value) And Not temp.HasFormula Then 'チェックしているセルが「数値で」「数式を含んでない」か調べる'
    temp.Value = "" '条件を満たす場合は、セルを空欄にする'
End If
Next