読者です 読者をやめる 読者になる 読者になる

一所懸命に手抜きする

監査の仕事をしています。ITを利用し、良い意味で「手抜き」することは効率化と精度アップに役立つと思うんです。部下への引き継ぎのためにまずは諸々頭から引っ張り出そうとブログを始めました。

[ Main ]  [ 別館 ]
当ブログで取り上げられている事案やデータベース、人物等はすべてフィクションです。

範囲指定もできて複数の引数を渡せるconcat互換ユーザー関数

Excel2013以前 Excel

Excel2016のConcat関数は範囲指定で文字列結合ができる

 当社は下位互換性を維持する必要性もあってExcel2016は使用していないのですが、Excel2016ではconcatenateを代替する関数としてConcat関数が導入されました。

support.office.com

[Excel2016-]concat
=CONCAT(B2:C8,X7,Y1:Z5)

 もともとのconcatenate関数は引数が複数でしたから、concat関数も引数を複数引き渡せます。そしてさらにB2:C8のように範囲で引き渡せるのですから素晴らしいです。
 Excel2016以降をお使いの方は本記事は無視して下さい。
 旧バージョンを使用している身としては、ぜひこの関数を使いたいのですが・・・。

ユーザー関数ConcatenateByRange()は範囲指定はできても引数は一つでした

 以前作成したユーザー関数ConcatenateByRange()は範囲指定はできても引数は一つしか渡せませんでした。

Range(範囲)で引数渡しできる concatenate

a-habakiri.hateblo.jp

concat互換のユーザー関数

 そこで、Excel2013以前用にユーザー関数としてconcat互換関数を作ってみました。

[Excel2016-]myConcat
Function myConcat(ParamArray myRanges())
    
    Dim cnt As Long
    Dim strs As String
    Dim myCell As Range
        
        strs = ""
    For cnt = 0 To UBound(myRanges())
        For Each myCell In myRanges(cnt)
                strs = strs & myCell.Value
        Next myCell
    Next cnt
    
    myConcat = strs
End Function

f:id:a_habakiri:20161123215630p:plain
 使い方はconcatと同じです。大文字小文字は関係ありません。

myConcat使用法
=myconcat(B2:C8,X7,Y1:Z5)
=myconcat("apple"," ","pen")

 郵便番号、都道府県、市町村、町名番地、建物名のように別れているデータを結合するのが簡単になりました。

ポイント

  1. 複数の引数を渡せる
  2. 引数に範囲を渡せる
広告を非表示にする