【記事4: Excel VBAでセルのデータを整形・加工する方法】《セルの値や書式を変更する方法》

はじめに

Excel VBAを使ってセルのデータを整形・加工する方法を学びます。文字列操作、日付・時刻の操作、数値データの操作、セル内データの分割・結合といった基本的な操作を学ぶことで、データの編集や解析が効率的に行えるようになります。

文字列操作

Excel VBAでは、文字列を操作するためのいくつかの関数が用意されています。以下に、よく使われる文字列操作の例を示します。

Sub StringOperations()
    Dim myString As String
    myString = "Excel VBAを学ぼう"

    ' 文字列の長さを取得
    MsgBox Len(myString)

    ' 文字列を大文字に変換
    MsgBox UCase(myString)

    ' 文字列を小文字に変換
    MsgBox LCase(myString)

    ' 文字列の一部を取得
    MsgBox Mid(myString, 7, 3)

    ' 文字列の置換
    MsgBox Replace(myString, "VBA", "Visual Basic for Applications")
End Sub

日付と時刻の操作

日付や時刻を操作する際には、以下のような関数を使います。

Sub DateTimeOperations()
    Dim myDate As Date
    myDate = Now

    ' 現在の日付を取得
    MsgBox Date

    ' 現在の時刻を取得
    MsgBox Time

    ' 日付と時刻を結合
    MsgBox CDate(myDate)

    ' 曜日を取得
    MsgBox Weekday(myDate)

    ' 日付を加算・減算
    MsgBox DateAdd("d", 7, myDate)
End Sub

数値データの操作

数値データを操作する場合、以下のような関数を使います。

Sub NumericOperations()
    Dim num1 As Double, num2 As Double
    num1 = 3.141592
    num2 = -3.141592

    ' 絶対値を求める
    MsgBox Abs(num2)

    ' 四捨五入
    MsgBox Round(num1, 2)

    ' 整数部分を取得
    MsgBox Int(num1)

    ' 小数部分を取得
    MsgBox num1 - Int(num1)
End Sub

セル内データの分割と結合

セル内のデータを分割・結合する際には、Split関数とJoin関数を使います。

Sub SplitAndJoin()
    Dim myString As String
    myString
myString = "apple,banana,orange"

' セル内データの分割
Dim stringArray() As String
stringArray = Split(myString, ",")

' 分割されたデータを表示
Dim i As Integer
For i = LBound(stringArray) To UBound(stringArray)
    MsgBox stringArray(i)
Next i

' セル内データの結合
Dim newString As String
newString = Join(stringArray, "-")

' 結合されたデータを表示
MsgBox newString
End Sub

まとめ

この記事では、Excel VBAでセルのデータを整形・加工する方法について説明しました。文字列操作、日付・時刻の操作、数値データの操作、セル内データの分割・結合といった基本的な操作を理解することで、データの編集や解析が効率的に行えるようになります。これらの操作を駆使して、自分の作業を効率化してみましょう。

演習問題

以下の問題を解いて、VBAでセルデータを整形・加工する方法を総合的に復習しましょう。

  1. セルA1に文字列 “Hello, World!” が入力されています。VBAを使ってこの文字列を大文字に変換し、セルB1に表示してください。
  2. セルA2に日付 “2022-01-01” が入力されています。VBAを使ってこの日付から30日後の日付を求め、セルB2に表示してください。
  3. セルA3に数値 “12345” が入力されています。VBAを使ってこの数値をカンマ区切りの文字列 “12,345” に変換し、セルB3に表示してください。
  4. セルA4に文字列 “apple,banana,orange” が入力されています。VBAを使ってこの文字列を “/” 区切りに変換し、セルB4に表示してください。

解答

Sub ExerciseAnswers()
    ' 問題1
    Range("B1").Value = UCase(Range("A1").Value)
' 問題2
Range("B2").Value = DateAdd("d", 30, Range("A2").Value)

' 問題3
Range("B3").Value = Format(Range("A3").Value, "#,##0")

' 問題4
Dim myString As String
myString = Range("A4").Value
Dim stringArray() As String
stringArray = Split(myString, ",")
Range("B4").Value = Join(stringArray, "/")
End Sub

解説

問題1では、UCase関数を使って文字列を大文字に変換しました。問題2では、DateAdd関数を使って日付に30日を加算しました。問題3では、Format関数を使って数値をカンマ区切りの文字列に変換しました。問題4では、Split関数とJoin関数を使って、文字列の区切り文字を変更しました。これらの関数を組み合わせることで、さまざまなデータ加工が可能です。

コメント