vba裏技,技,論理 - セル内の文字(値)の処理

セル内の文字列(値)を更に処理することが可能です。例えば一番左に書かれている文字は何であるかを知ることが必要になるなどの時にこれらのコマンドをします。例えば「売上総額」という文字列が選択されたセル内に入力されているとして、

v左=left(Selection.Value, 1)

は選択されたセル内の文字の左の文字を「1つ」即ち「売」を返す書き方です。それを「3」にすれば左から3つの文字「売上総」を返します。

v右=Right(Selection.Value, 2)

は選択されたセル内の文字の右から2つの文字「総額」を返すコーディングです。

v長さ=Len(Selection.Value)

は文字の長さ、即ち文字数を返す書き方です。この場合は「4」です。これらの書き方を組み合わせると種々の操作が可能になります。ここではセル内に「12月分売上」と書かれているとして、そのうちの「12月」という文字を知りたい時は

v売上月=Left(Selection.Value, Len(Selection.Value) -3)

としておくと「12月が得られるのです。月は例えば3月の時は単に「left(selection.value, 3)としておくと「3月分」と余計な文字をも返してしまいます。「分売上」という言葉が不変の時はその文字数は3なので、全体の文字数から3を引くとしておかなくてはならないのです。もっと詳しく説明すると「selection.value」「12月分売上」の文字数は6でそれは「len(selection.value)」で得られるので、「len(selection.value), -3)は「6 – 3」になります。文字数が変化するときに使うコマンドです。

セル内の文字が「売上額12月」となっていればどうすればいいのでしょうか。上記を応用して

v売上月=Right(Selection.Value, Len(Selection.Value) – 3)

で、「会社12月売上額総計」とあった場合はどうすればいいのでしょうか。その場合の処理は

v中間処理=Right(Selection.Value, 3)

で先ず3つ目の文字以降を返してもらってそれをv中間処理という変数で仮に受けておきます。v中間処理は「12月売上額総計」となり、さらにそれを

v売上月=Left(v中間処理. Len(v中間処理)-5)

とすれば「len(12月売上額総計)」の8文字のうちの「売上額総計」の5文字分を引いた「12月」を得ることができます。「v中間処理」の内の「12月」が「3月」となっても「len(v中間処理)」は7文字になるだけで、「len(v中間処理) – 3」は「7- 5」になり「3月」が返されます。

これは二段階にしなくても

v売上月= Left(Right(Selection.Value, 3). Len(Right(Selection.Value, 3))-5)

としてもいいのですが、少し頭がこんがり増す。そんな時は二段階に別けると分かりやすくなります。

「mid」は文字列の先頭から何文字目から処理を始めるかを書く時に使います。

上記の場合

v中間処理=Mid(Selection.Value, 3)

v売上月=Left(v中間処理. Len(v中間処理)-5)

でも同じ結果が得られます。セル内の文字列が例えば「会社売上総額」などのように全ての文字が固定しているような場合、「mid」は便利に使えます。

v値Mid(Selection.Value, 3, 2)

これは3文字目から始めて2文字を返す場合の書き方です。「会社売上総額」の場合は「売上」が返されます。

今度はもう少し複雑にして、セル内の文字が「12月売上加賀美」の場合の「加賀美」を得るには次のように書きます。

v氏名=Right(Selection.Value, Len(Selection.Value) – InStr(Selection.Value, “上”))

「instr」は「”上”」が文字列の何番目に現れるか数で表します。この場合は5番目に出てくるので、「len(selection.value, instr(selection.value, “上”)は「8 – 5」で3です。従って「selection.value」の右から3番目以降の文字列を返します。この場合「加賀美」です。

 他にも書き方はありますが、だいたい「right, left, len, mid, instr」くらいをマスターすれば大体ことが足ります。くれぐれも丸暗記しないようにしなければなりません。プログラムは非常に論理的にコーディングするように考えられているので、同じく論理的に進めていけば簡単なのです。

vba酒巻修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です