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
= Trim(Range("B" & i).Value)
i = 4
Do Until Range("B" & i).Value = ""
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