エクセルの関数って便利です。
でもやりたいことを全て関数でやろうとすると関数の中の関数。の中の関数。
という状態になってしまいます。今回は、
区切り文字を指定して○番目の文字を取り出す
をオリジナル関数でやってみようと思います。
普通の関数でやった場合
まず、普通にやるとどうなるのかを見てみます。
セルA1にこんなデータがあります。
1番目-2番目-3番目-4番目
このデータの2番目を取り出したい時はセルA2に書く関数式は、
=MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1)
式の参考https://daitaideit.com/excel-char-split/
こんな状態になります。
実際にやってみた結果がこれです。
正しく取り出せました。
もちろん情報を取り出したい時だけ、パッと作って使い捨てる式ならそれでいいです。
ですが、定期的に使うエクセルファイルで複雑な式があると後で見たり、書き直すのが難しいです。
そこでオリジナル関数を作ってスッキリさせてみたいと思います。
オリジナル関数でやった場合
この後、説明するコピペで設定できるオリジナル関数の「カットセレクト」を登録した状態で試してみます。
セルA3に書く関数式です。
=cutselect(A1,"-","2")
こちらも正しく取り出せました。
このcut関数は3つの条件で動作します。
- 元になる文字 ・・A1
- 区切る文字 ・・-
- 区切った後の番号 ・・2
普段関数を使っている方なら関数式と結果を見るだけで使い方が分かると思います。
下記条件だと正しく表示できないので、結果が0になります。
- 元になる文字に区切る文字が存在しない。
- 番号まで区切れない。
動きが思い通りだった場合は、次のオリジナル関数の設定を行ってください。
オリジナル関数の設定はプログラムのコピペでできるので簡単にできます。
オリジナル関数の設定
プログラムをコピペする画面を開く操作の説明です。
ツールの[開発]から[Visual Basic]を選択して「Microsoft Visual Basic for Applications」を開く
ツールの[挿入]から[標準モジュール]を選択
真っ白な画面が出るので下のコードをコピーして貼り付けます。
Function cutselect(元の文字, 区切り文字, 番号) 'エラー判定① If 番号 < 1 Then Exit Function If Not 元の文字 Like "*" & 区切り文字 & "*" Then Exit Function 要素番号 = 番号 - 1 リスト = Split(元の文字, 区切り文字) 'エラー判定② If UBound(リスト) < 要素番号 Then Exit Function cutselect = リスト(要素番号) End Function
コピーが出来たらcutselectを試してみてください。
VBAはどうやって覚える?
プログラムのコードが読めないと、参考にしているコードの理解や自分でプログラムを書くときに時間がかかってしまいます。そんな時は基礎から学ぶと応用もできるようになり自分の作りたいプログラムがスムーズに作れるようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはVBAの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。
本を読んでもわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、プログラミングの敷居がとても低くなります。
誰かに相談できるのは心強いです。
>>オンラインスクールを無料体験で始める
まとめ
今回は複数の関数を組み合わせて行なっていた区切り文字を指定して○番目の文字を取得という動きを、オリジナル関数によってスッキリさせました。
関数の組み合わせを使っている方や、これから区切った文字を取得したい方はオリジナル関数を試してみてください。