M=Range("B4") ' B4セルのデータを変数Mに代入する。
C=Left(M, 1) ' 変数Mの、左から1番目の文字をCに代入する。
C2=Left(M, 2) ' 変数Mの、左から2番目までの文字をC2に代入する。
C3=Right(M, 1) ' 変数Mの、右から1番目の文字をC3に代入する。
C4=Right(M, 3) ' 変数Mの、左から3番目までの文字をC4に代入する。
C5=Mid(M, 2, 3) ' 変数Mの、左側2番目から3文字をC5に代入する。
strHin=Range("C4") ' C4セルのデータを変数 strHin に代入する。
MJ="CD" ' 検索条件列 CD を変数 MJ に代入する。
N=InStr(strHin, MJ) ' 関数 [InStr] は文字列の中で、条件文字が何文字目にあるのかを算出して
' 変数 N に代入する。
strHin2=Range("C5") ' C5セルのデータを変数 strHin2 に代入する。
MJ2="〜" ' 検索条件文字列 " 〜 " を変数 MJ2 に代入する。
N1=InStr(strHin2, MJ2) ' " 〜 " が strHin2 の何文字目にあるのかを N1 に代入する。
S=Left(strHin2, N1-1) ' N1 で算出した位置より、一つ前の文字を S に代入する。
' S=A1 である。
strHin3=Range("C6") ' C6セルのデータを変数 strHin3 に代入する。
MJ3="〜" ' 検索条件文字列 " 〜 " を変数 MJ3 に代入する。
N2=InStr(strHin3, MJ3) ' " 〜 " が strHin3 の何文字目にあるのかを N2 に代入する。
S2=Left(strHin3, N2-1) ' N2で算出した位置より、一つ前の文字を S 2に代入する。
' S2=A10である。
● S=A1, S2=A10 で見るように N1−1 でも N2−1 でも、それより左側の文字は何文字あっても抽出され
ることが分かる。
---------------------------------------------------------------------------------------------------------------------
● その他の検索方法
M2=Range("B8") ' M2=NK−12345である。
strOb="ー"
Point=Application.WorksheetFunction.Find(strOb, M2) ' Point=3 である。
' M2の中の " ー " の位置を調べてPointに
' 代入する。
If Point=2 Then K=Left(M2, 1) ' Point が 2 なら " ー "
の前の記号を1文字
' K に代入する。
If Point=3 Then K=Left(M2, 2) ' Point が 3 なら " ー "
の前の記号を2文字
' K に代入する。
● この検索方法は、ハイフンの前の文字数が変化する場合で、ハイフンの前の文字列を、取り出したい
時に有効である。
尚、Application.worksheet Function はExcel の関数を VBA で使用するときに、定義する構文である。
●文字列の中から、特定位置の文字を抽出する。
基本的なマクロの習得
文字列の中から、特定位置の文字を抽出する。
実際に使っているシステムの内容で解説
EXCEL VBA 講座