#742 | Excelに貼り付けたNullを空白に置換するマクロ | VBA | |
Accessでは、テーブルなどでデータを見たとき、見た目は”空白”であっても”NULL”という値が保存されています。外見は同じでも内部的なデータとしては別物として扱われます。 そのようなデータをコピーしてExcelに貼り付けたとき、やはり見た目はいずれも”空白”ですが、実際には異なる値であるため、関数式などにおいて支障が出る場合があります。たとえば、「COUNTA」関数を使って”空白でないセルの数”をカウントする場合、”NULL”は”空白でない”セルとしてカウントされてしまいます。 そのようなケースにおいて、Excelに貼り付けた一連のデータから”Null”のセルを”空白”のセルに一括置換するマクロを紹介します。 Accessのテーブルやクエリからレコードをコピー&ペーストしたあと、Excel側でそれらを範囲選択したあとにこのマクロ「Null2Space」を実行することで、範囲内のすべての”Null”が”空白”に置換されます。 【注意】下記はAccessではなくExcel用のマクロです。 Sub Null2Space() Dim RngAdr As String Dim Rng As Range If TypeName(Selection) <> "Range" Then Exit Sub RngAdr = Selection.Address(False, False) RngAdr = Replace(RngAdr, ":", "") If IsNumeric(RngAdr) Then Beep MsgBox "行全体が選択されています! セル単位で範囲選択し直してください。" Exit Sub End If If Selection.Address = Selection.EntireColumn.Address Then Beep MsgBox "列全体が選択されています! セル単位で範囲選択し直してください。" Exit Sub End If Beep If MsgBox("AccessからペーストしたNullのセルを空白に置換します!", vbQuestion + vbOKCancel) = vbCancel Then Exit Sub End If 'すべてのセルをループ処理 For Each Rng In Selection '長さゼロでかつEmptyでなければ""を代入 If Len(Rng.Value) = 0 And Not IsEmpty(Rng.Value) Then Rng.Value = "" End If Next Rng End Sub 実行例:
|
|||
|
Copyright © T'sWare All rights reserved |