本ページには広告が含まれています。

Excel VBA Right関数 文字列右端から指定数の文字取得

Excel VBA Right関数 右端(最後)から指定数の文字取得

Excel VBAの「Right関数」について解説します。

スポンサーリンク

Right関数とは

Excel VBA の Right関数とは、対象文字列の右端(最後)から数えて指定した文字数を返します。

※ 返される文字列は、バリアント型(内部処理形式 StringのVariant)の値です。

Right 関数(Visual Basic for Applications リファレンス)

スポンサーリンク

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Right(string, length)

引数

引数 説明
string【必須】職対象元の文字列(式)を指定します
length【必須】返す文字数を示す数値(式)を指定します

戻り値

戻り値 説明
文字列string の左端から、length 指定数の文字列が返ります
string に Null が含まれていた場合は、Null が返されます。
lengthstring の文字数以上が指定された場合は、string が返されます。

戻り値は、全角半角問わずに length で指定した文字数が返ります。(1文字2バイト)

string をバイトデータとして扱う場合は RightB 関数を使用します。
length には取得する文字数ではなくバイト数を指定します。

解説(使用例)

では、ここからは簡単なサンプルコードを作成して使用例を解説していきます。

Right関数とRightB関数 サンプル

文字列に対し length 指定数による結果を確認します。

Sub Right_Sample01()
  Dim str As String
  
  '文字数「3」を指定した場合
  str = Right("kurumico.com", 3)
  Debug.Print (str)   'com
  
  '文字数「0」を指定した場合
  str = Right("kurumico.com", 0)
  Debug.Print (str)   '""
  
  '元の文字数より多い「20」を指定した場合
  str = Right("kurumico.com", 20)
  Debug.Print (str)   'kurumico.com
  
  'RightB関数で「6」を指定した場合
  str = RightB("kurumico.com", 6)
  Debug.Print (str)   'com
  
End Sub

実行結果のイミディエイトがこちらです。

Right_Sample01 実行結果画像

1件目、文字列「kurumico.com」の後ろから「3」文字を抜き出しました。

2件目は、字数指定が「0」なので、空白が返されています。

3件目は、元の文字数「12」以上の「20」を指定したケースです。元の文字列がそのまま返りました。

4件目は Right 関数の例です。length の指定はバイト数指定です。1文字2バイトで取得しています。

セルから指定文字より後ろ文字列を取得する

セルのデータを加工して、必要なデータを抜き出す作業は比較的よく行われていると思います。

次のサンプルコードは、A列の「氏名」データから「名」の部分を抜き出してC列に書き出すサンプルです。姓名間には全角または半角のスペースがある設定です。

Sub Right_Sample02()
  Dim str As String, length As Long, i As Long
    
  For i = 2 To 10
    str = Cells(i, 1)
    length = InStrRev(str, " ", -1, vbTextCompare)
    Cells(i, 3) = Right(str, Len(str) - length)
  Next

End Sub

実行結果のワークシート画像です。

Right_Sample02 実行結果画像

B列の苗字だけ書き出す Left関数 を使ったサンプルは別記事にありますのでそちらを参照願います。

A列の「氏名」データの特徴は次のとおりです。

・「氏」と「名」の間にスペースがあるが「全角」「半角」が混在

・「氏」の字数が1~3のように不特定

以上のことから、length は最後の「スペース」の位置より後の文字列の数を指定します。

「スペース」の位置は、InStrRev 関数の全角/半角を区別しないモード vbTextCompare を使って取得します。

Right関数の length 部分は、Len関数で全体の文字数を取得して「スペース」の位置をマイナスします。

Len(str) – length

実行結果は上の画像のとおり、うまくいきました(^^)

おわりに

Excel VBA「Right 関数」で対象文字列の右端(最後)から指定文字数を取得する方法について解説しました。

今回使用したサンプルでは「InStrRev関数」と「Len関数」とを組み合わせて使い、引数の取得・作成を行いました。関数は、単独で機能するだけでなく、他の関数やメソッドを組み合わせて使う場合がたくさんあります。

例えば「空白」を「InStrRev関数」で探していますが「Findメソッド」を使うこともできます。

Excel VBAの関数を使いこなすには、関数の構文や特徴を正しく理解してうまく利用していくことが大事です。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらです。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!