Excel(エクセル)1つのセルに入力されている複数の数値を合計する方法!

Excel(エクセル)1つのセルに入力されている複数の数値を合計する方法! Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)VBAとは

皆さんExcelのVBAとはなにかをご存じでしょうか?

VBAは、Excelのワークブックやワークシート内のデータやオブジェクトに対してアクセスし、操作することができます。VBAを使用することで、ユーザーはExcelのさまざまな機能をカスタマイズしたり、繰り返し作業を自動化したり、独自の機能を追加したりすることができます。

VBAは、Excelのメニューバーやボタンに割り当てられたマクロを作成するためにも使用されます。マクロは、一連の操作や処理を記録して再生するためのスクリプトです。VBAを使用することで、マクロの記録だけでなく、より高度なプログラミング機能や条件分岐、ループなどの制御構造を使用したプログラムの作成も可能です。

VBAは、Excelだけでなく、他のMicrosoft Officeアプリケーション(Word、PowerPoint、Accessなど)でも使用することができます。また、VBAはExcel以外のアプリケーションとの連携や、外部のデータソースとのデータの取得や更新など、さまざまなタスクを実行するためにも利用されます。

VBAは、プログラミングの基礎知識があれば比較的簡単に学ぶことができます。VBAの学習には、VBAの構文やオブジェクトモデルの理解、関数やサブルーチンの作成、エラーハンドリングなどが含まれます。ExcelのVBAエディタを使用して、コードを入力、編集、実行することができます。

今回の記事ではExcelのVBAで1つのセルに入力されている複数の数値を合計する方法をご紹介していきます。

Excel(エクセル)1つのセルに入力された複数の数値を合計する方法

では、早速ですがExcelのVBAで1つのセルに入力されている複数の数値を合計する方法をご紹介していきます。

まず、VBAを使用するためには「開発」タブの「Visual Basic」を選択します。

これでVBAを入力する画面を開くことができます。

開発タブがない方はExcelのオプションで開発にチェックをいれてください。

これで開発タブを使用できるようになります。

今回、やりたいことはA列にカンマ区切りで入力された数値を足し算し、答えをB列の同じ行に出力するということです。例えば、A1セルに「1,10」と入力されている場合にB1セルに「11」と出力するという感じです。

では、VBAのエディタを開き以下のマクロを入力します。マクロでやっている処理はわかりやすくコメントを書いているのでぜひ参考にしてみてください。

Sub SumNumbersInColumn()
    Dim ws As Worksheet
    Dim LastRow As Long
    Dim Cell As Range
    Dim TotalSum As Double
    Dim CleanedValue As String
    Dim ValuesArray() As String
    
    ' 対象のワークシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適切に変更
    
    ' A列の最終行を取得
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 各行ごとに処理
    For Each Cell In ws.Range("A1:A" & LastRow)
        ' セルが空白でないか確認
        If Not IsEmpty(Cell.Value) Then
            ' セルの値を取得
            CellValue = Cell.Value
            
            ' カンマを空白に置き換え
            CleanedValue = Replace(CellValue, ",", " ")
            
            ' 空白で区切られた数値を配列に格納
            ValuesArray = Split(CleanedValue, " ")
            
            ' 合計を計算
            TotalSum = 0
            For Each Value In ValuesArray
                ' セルの値が数値か確認
                If IsNumeric(Value) Then
                    TotalSum = TotalSum + Val(Value)
                End If
            Next Value
            
            ' 合計をB列の同じ行に出力
            Cell.Offset(0, 1).Value = TotalSum
        End If
    Next Cell
    
    ' メッセージボックスで処理が完了したことを表示
    MsgBox "処理が完了しました。"
End Sub

次に入力したマクロをボタンで簡単に実行できるようにボタンを作成します。

マクロをボタンに登録するには以下の手順を実施します。

開発」タブから「挿入」を選択し、「ボタン」をクリックします。

適当な位置にボタンを作成し、先ほど入力したマクロを登録します。

ボタンのテキストを変更するにはボタンで右クリックし、「テキストの編集」をクリックします。

なに用のボタンなのかわかるように名前を付けておきましょう。

これでボタンをクリックするとA列に入力された分の計算が行われます。

カンマで区切られた数値を計算するのはとても手間がかかるのでVBAで自動化することで時間をとても短縮することができます。今回の例ではカンマで区切ることを前提に作成していますが、カンマではない区切り文字の場合も少しの修正で使用できるのでVBAのコメントを見て対象のコードを修正してみてください。

また、業務で不特定多数の方が使うようなコードを書く場合にはエラー処理を入れるようにしましょう。今回は特にエラー処理は入れていませんが、例えば、カンマ区切りで数値を入力してほしいのにAなどの文字を入力していると処理がエラーになってしまいます。このようなことを想定しエラーの処理、メッセージをわかりやすくする必要があるので自分で作成する場合はその点を考慮してみましょう。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelで1つのセルに入力されている複数の数値を合計する方法をご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

タイトルとURLをコピーしました