この記事では、ExcelのVBAマクロを使用して、データが整数か少数かを判定し、その結果を表示する方法について解説していきます。
ポイントとしては`Int`関数と`Mod`関数を使用することです。
これらの関数により、数値の整数部分のみを取り出したり、数値を特定の数で割った余りを求めることができます。
マクロ初心者でも理解しやすいように、変数名を多少変わった`aaaaa変数aaaaa`の形式で示しています。
この際、実際のプログラミングでは、変数名を英語表記で適切な名前に変更することをおすすめします。
それでは、具体的な手順を見ていきましょう!
VBAマクロで整数かどうか(小数点があるかどうか)列方向に判定・表示する方法
それではまず、列方向にデータが整数かどうか(小数点があるかどうか)を判定し、表示する方法について解説していきます。
具体的には、特定の列に対してその右隣の列に判定結果を出力し保存させていきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckIntegerInColumn()
Dim aaaaaColumn As Range
Dim aaaaaCell As Range
Dim aaaaaOutputColumn As Long
' "OK"列を見つける
Set aaaaaColumn = Range("A1:Z1").Find("ok", LookIn:=xlValues)
If Not aaaaaColumn Is Nothing Then
aaaaaOutputColumn = aaaaaColumn.Column + 1
For Each aaaaaCell In aaaaaColumn.EntireColumn.Cells
If IsNumeric(aaaaaCell.Value) And Not IsEmpty(aaaaaCell.Value) Then
Cells(aaaaaCell.Row, aaaaaOutputColumn).Value = _
IIf(aaaaaCell.Value = Int(aaaaaCell.Value), "整数", "少数")
End If
Next aaaaaCell
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckIntegerInColumn関数を実行します。
このコードでは、まず”OK”と書かれた列を探し、その列に含まれる各セルが整数か少数かを判定しています。
判定の基準としては、セルの値が`Int`関数によってそのままの値になるかどうかを使用しています。
整数であれば”整数”、少数であれば”少数”とその右隣の列に出力します。
VBAマクロで整数かどうか(小数点があるかどうか)行方向に判定・表示する方法
続いては、行方向にデータが整数か少数かを判定し、表示する方法について解説していきます。
この方法では、特定の行に注目し、その下の行に判定結果を出力し保存します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckIntegerInRow()
Dim aaaaaRow As Range
Dim aaaaaCell As Range
Dim aaaaaOutputRow As Long
' 3行目に注目
Set aaaaa
Row = Rows("3:3")
aaaaaOutputRow = aaaaaRow.Row + 1
For Each aaaaaCell In aaaaaRow.Cells
If IsNumeric(aaaaaCell.Value) And Not IsEmpty(aaaaaCell.Value) Then
Cells(aaaaaOutputRow, aaaaaCell.Column).Value = _
IIf(aaaaaCell.Value = Int(aaaaaCell.Value), "整数", "少数")
End If
Next aaaaaCell
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckIntegerInRow関数を実行します。
このスクリプトでは、3行目の各セルをチェックし、その下の行に各セルが整数か少数かを表示します。
上と同じく、`Int`関数を使用して数値の整数部分と比較することで、判定を行っています。
VBAマクロで整数かどうか(小数点があるかどうか)行方向に判定・表示する方法【アクティブセル(複数も)に着目し、その右隣の行に判定結果を出力し保存させる】
最後に、アクティブセル(複数のセルを含む)に着目して、その右隣の列に判定結果を出力し保存する方法について説明します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckIntegerInActiveCells()
Dim aaaaaCells As Range
Dim aaaaaCell As Range
Set aaaaaCells = Selection
For Each aaaaaCell In aaaaaCells
If IsNumeric(aaaaaCell.Value) And Not IsEmpty(aaaaaCell.Value) Then
Cells(aaaaaCell.Row, aaaaaCell.Column + 1).Value = _
IIf(aaaaaCell.Value = Int(aaaaaCell.Value), "整数", "少数")
End If
Next aaaaaCell
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckIntegerInActiveCells関数を実行します。
選択されたセルが整数か少数かを判定し、その右隣に結果を表示します。
この方法は、複数のセルが選択されている場合にも対応しています。
まとめ VBAマクロで少数点があるかどうか判定・表示する方法(列ごと、行ごと、アクティブセルなど)【Int関数、Mod関数】
ここでは【Excel】VBAマクロで整数かどうか、少数点があるかどうか判定・表示する方法(列ごと、行ごと、アクティブセルなど)【Int関数、Mod関数】について解説しました。
マクロをマスターしてさらに快適に過ごしていきましょう^_^