ブログ

日々これ精進

study & discipline

2024年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
最新の記事
カテゴリ
(H) (25)
(O2S) (13)
月別表示
(IS)

Excelの関数をVBAで作成してみた結果… (IS)

日々PCで仕事をしていて、よく利用するツールのひとつがEXCELです。
表の作成にとどまらず、多彩な資料が作成可能なためOffice製品の中でも特に重宝しております。
Excelでは関数の使用で作業効率が上がるので「SUM」や「VLOOKUP」等はどなたもご利用のことと思います。
特に数字操作については理系学生でも困らないレベルで揃っています。
これに対し個人的に痒いところに手が届かないと感じるのが文字列の操作です。
例えば「CONCATENATE」です。
複数セルの結合を実施することができるのですが「SUM」などと異なり、範囲指定できないという欠点があります。
「SUM」では”A1:G1″と指定することで9個のセルの範囲指定ができますが「CONCATENATE」は”A1,B1,…G1″と全て羅列する必要があります。
これを仕様だと諦めなければならないかというと、実はExcel VBAを利用することで関数を自作することができるんです。
VBAを使用するにはExcelの開発タブから「Visual Basic」を選択することでVBAツールが展開します。
左側のプロジェクト画面より、対象となるExcelファイルを右クリックし「挿入 – 標準モジュール」で標準モジュールというものを作成します。
この標準モジュールに以下のコードをコピペして保存することで、”範囲指定の可能な「CONCATENATE」”として「RANGECON」が使えるようになります。


Function RANGECON(range As Range, Optional delim As String = “,”) As String
Dim result As String
Dim r As Range

result = ""
For Each r In range
    If r <> "" Then
        result = result & r & delim
    End If
Next
If result <> "" Then
    RANGECON = Left(result, Len(result) - 1)
Else
    RANGECON = ""
End If

End Function


この「RANGECON」の使い方としてセル”A1″から”A5″の内容を”,(カンマ)”セパレータ区切りで結合することを例に考えます。
「CONCATENATE」では、”=CONCATENATE(A1,”,”,A2,”,”,A3,”,”,A4,”,”,A5)”と書かなければなりません。
これに対し「RANGECON」では、”=RANGECON(A1:A5)”と記載するだけで同様の文字列結合が可能です。
と書いてきて、この使用方法の裏取りとしてネット検索してみたところ...
Excel2016から「CONCAT」なる標準関数が追加されており「RANGECON」とほぼ同様のことができるようになっているではありませんか。
Excelの使い勝手をよくするためにVBAに詳しくなるとともに、常に最新のOfficeの機能をチェックすることも重要という教訓でした。

2019年06月03日

一つ上に戻る

先頭に戻る