以下の内容はhttps://www.limecode.jp/entry/fungo/060-normalize-corporate-designationより取得しました。


60本目:「株式会社」の表記ゆれ置換

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、
VBA100本ノック」に対する私の回答と解説のページです。

100本ノックの出題リストはこちらから
excel-ubara.com

出題:「株式会社」の表記ゆれ置換

#VBA100本ノック 60本目
会社名の「株式会社」の表記ゆれを正すFunctionを作成してください。
引数で文字列を受け取り、文字列で返してください。
(株)
(株)


株)…
株)…
…(株
…(株
このような表記を「株式会社」に変換してください。

「株式会社」の表記ゆれ置換

◇ 出題ページはこちら

ソースコード

' 100本ノック060:「株式会社」の表記ゆれ置換
Function 株式会社の表記を統一(ByVal 元テキスト As String, Optional ByVal 置換後の文字列 As String = "株式会社") As String

    Dim 結果値 As String: 結果値 = 元テキスト
    Dim Arr置換リスト
    Arr置換リスト = Array("(株)", "株)", "(株", "㈱", ChrW(&H337F), ChrW(&H3291), ChrW(&H33CD))

    Dim 置換対象
    For Each 置換対象 In Arr置換リスト
    
        結果値 = Replace(結果値, 置換対象, 置換後の文字列, Compare:=vbTextCompare)
    
    Next

    株式会社の表記を統一 = 結果値

End Function

解説

複数文字種を順次置換していく問題です。

愚直にReplaceを並べてもよいですが、
対象を配列で定義しFor Eachで回す方がスマートに書けますね。


問題自体は「株式会社」に置換することが目的でしたが、
(株)にするなど、目的の文字列も設定できる関数にしてみました。

とはいえ毎回目的の文字列を指定するのも面倒ですので、
省略時は「株式会社」となるよう、Optionalの引数として設定しています。


こういった関数はOptionalを使って省略可能な引数を設定すると、
小回りが利いて使いやすい関数になります。

積極的に使っていきましょう。




以上の内容はhttps://www.limecode.jp/entry/fungo/060-normalize-corporate-designationより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14