業務をこなす中で文字抽出の、
ユーザー定義関数は、役に立ちました。
住所文字の中から 市 を抽出する
ユーザー定義関数 市 VBA です。
Public Function 市(Target As Variant)
Dim A As Variant
Dim A1 As Variant
Dim B As Long
Dim C As Long
On Error GoTo myError
A = Split(Target, "県")
市 = A(1)
B = Len(市)
A1 = Split(Target, "市")
A = A1(1)
C = Len(A)
C = B - C
市 = Left(市, C)
Exit Function
myError: 'エラーが発生したらこの行にジャンプします。
市 = "該当無"
End Function
目次
ユーザー定義関数 市 の VBA マクロ説明。
- ユーザー定義関数をBook共通で
使うのなら Public (公)と言う文字をつけます。
単独Book だけの ユーザー定義関数 にするのであれば、未記入 にします。 - 「ユーザー定義関数名」
四の五のなく、Function 市 と書きます。注意ポイント
ユーザー定義関数 名を 市 にしましたが、
ここに書いた文字が関数挿入ダイアログに、
表示されます。
分かりやすい名前をつけて下さい。 - カッコ内に引数名と引数データー型を書きます。
引数が複数ある場合 , で区切り追加記入して行きます。
ここに書く引数名がセル選択に使われる為、
分かりやすい名前にしておきましょう。
引数名称は、Target にしました。
VBA とか マクロ とか?と思われた方は、合わせてお読みください。
引数 Target データー型の宣言
引数Targetにどんなデーターが入って来るのか宣言しておきます。
ポイント
Variant(何でもあり!)とする!と言う意味です。
データ宣言に関しては、下記記事に詳しく書きました。
-
Excel マクロ に出てくる 変数 とか、宣言のDimとか、データ型って何よ。
Excelの広場 最初にまず?となるのが、Dimで変数を宣言することでしょう。数学で X とか Y とかでてきましたよね。 例えば、 X = 5 Y = 10 とか.. 日本語は難しい言い方をして X ...
続きを見る
ユーザー定義関数 VBAコード内で使用する。変数の宣言
ユーザー定義関数 VBA コード 内で、
使用する変数のデーター型を宣言します。
Dim A As Variant
変数名 A は、
配列データーが入って来るので
データー型 は、Variant(何でもあり)にしました。
Dim B As Long
Dim C As Long
変数 B , C は、
多くても 2桁の整数しか入って
こないので Long にしました。
Dim A1 As Variant
変数名 A1 も、
配列データーが入って来るので
データー型 は、Variant(何でもあり)にしました。
変数名称は、アルファベット、漢字、
ひらがな、演算禁則文字 以外なら何でもOKです。
7A とか、
数字を頭に付けるのは、NG です。
この場合、A7 等、にしましょう。
On Error エラー処理
何らかのエラーが発生した場合、
指定した タグ(札)名 まで飛びます。
On Error GoTo myError
この場合、エラーが発生したら
タグ myError まで 飛びます。
Target セル住所文字を キー文字【県】で 分離 する(Split 関数)
Split 関数は、指定した文字で区切った
文字列を配列にして返します。
A = Split(Target, "県")
Target セルに書かれた文字列の中から
県 をキー文字にて、その前後を配列にして変数 A に格納します。
Target セル が、
広島県広島市南区南蟹屋2丁目3−1 の場合、
キー文字 県 の前後文字、
0号室 = 広島
1号室 = 広島市南区南蟹屋 2丁目 3-1
各々の文字が、変数 A に格納されます。
Target セル 住所に書かれている 市 の 文字数を知る。
市 = A(1)
1 号室に入っている文字が、
県 より後ろの文字なので、
市 の中身は、
広島市南区南蟹屋町 2丁目 3-1になります。
B = Len(市)
市 に入っている文字数を
変数 B に格納します。
格納されている 市 の文字は、広島市南区南蟹屋町 2丁目 3-1 なので、
変数 B は、14 となります。
目的は、市 以下の文字数をしる事です。
A1 = Split(Target, "市")
Target セルに書かれた文字列の中から
市 をキー文字にて、その前後を配列にして変数 A1 に格納します。
Target セル が、
広島県広島市南区南蟹屋2丁目3−1 の場合、
キー文字 市 の前後文字、
0号室 = 広島県広島
1号室 = 南区南蟹屋 2丁目 3-1
各々の文字が、変数 A1 に格納されます。
A= A1(1)
1 号室に入っている文字が、
市 より後ろの文字なので、
A の中身は、
南区南蟹屋町 2丁目 3-1になります。
C = Len(A)
A に入っている文字数を
変数 C に格納します。
格納されている 市 の文字は、南区南蟹屋町 2丁目 3-1 なので、
変数 B は、11 となります。
C = B - C
C = 14- 11、
C に 3 を 再格納します。
Target セル(住所)の 市 は、
3 文字だと言う事が分かりました!
市 = Left( 市 , C )
現在、市 に格納されている文字は、
広島市南区南蟹屋町 2丁目 3-1なので、
Left 関数 にて 左寄り 3 文字取り出し、
再格納すればよい分けで、
ユーザー定義関数 市 は、
広島市 と なります。
Exit Function
処理にエラーが発生しなければ、
ユーザー関数 県 は、マクロ実行を終了します。
myError:
処理エラーが発生すれば、
市 = "該当無"
ユーザー定義関数 市 に 該当無し を入れ、
End Function
全ての処理を終了します。
ユーザー定義関数 市 を使ってみましょう!
① セル O8 を選択して fx ⇒ ユーザー定義 ⇒ 「OK」
② 関数名 市 を選択
③ Target L8 セルを選択
④ 「OK」釦を押すと、住所 から 市 文字だけが抽出される。
⑤ 後は、いつものように 関数式を ドラッグすれば OK