目次
これまで数回にわたり、文字列を操作するためのさまざまなテキスト関数について説明してきました。 今日は、文字列の右端から指定した文字数を返すRIGHT関数に注目します。 他のExcelテキスト関数と同様、RIGHTは非常にシンプルで簡単ですが、いくつかの意外な使い方があり、以下のような場合に役立つと思われます。をご覧ください。
Excel RIGHT関数の構文
ExcelのRIGHT関数は、テキスト文字列の末尾から指定した文字数を返します。
RIGHT関数のシンタックスは以下のとおりです。
RIGHT(テキスト, [num_chars])どこで
- テキスト (必須) - 文字を抽出するためのテキスト文字列です。
- 数字(Num_chars (オプション) - 抽出する文字の数、右端の文字から始まる。
- もし num_chars を省略した場合は,文字列の最後の1文字が返される(デフォルト)。
- もし num_chars が文字列の総文字数より大きい場合、全ての文字が返される。
- もし num_chars が負数の場合、右式は#VALUE!エラーを返します。
例えば、セルA2の文字列から最後の3文字を取り出すには、次のような数式を使用します。
=RIGHT(A2, 3)
その結果は、次のようなものになるかもしれません。
重要!ExcelのRIGHT関数は、常に テキスト文字列 右辺の式を強制的に数値で出力させるには、この例のようにVALUE関数と組み合わせて使用します。
エクセルでRIGHT関数を使う方法-計算式の例
実際のワークシートでは、ExcelのRIGHT関数が単独で使われることはほとんどありません。 ほとんどの場合、他のExcel関数と一緒に、より複雑な数式の一部として使われます。
ある文字の後に来る部分文字列を取得する方法
特定の文字に続く部分文字列を抜き出したい場合は、SEARCH関数かFIND関数でその文字の位置を特定し、LEN関数が返す文字列の全長からその位置を引き、元の文字列の右端からその文字数だけ抜き出す。
RIGHT( 列 , LEN( 列 ) - SEARCH( せいかく , 列 ))例えば、セル A2 にスペースで区切られた姓と名があり、姓を別のセルに引っ張り出したいとします。 上記の一般的な数式を、A2 の代わりに 列 のペースに「"」(スペース)を入れています。 のキャラクターを使用しています。
=right(a2,len(a2)-search(" ",a2)))
この式から、次のような結果が得られます。
同様に、コンマ、セミコロン、ハイフンなど、他の文字の後に続く部分文字列を取得することもできます。例えば、ハイフンの後に来る部分文字列を抽出するには、次の式を使用します。
=right(a2,len(a2)-search("-",a2)))
結果はこのような感じになります。
区切り文字が最後に出現した後の部分文字列を抽出する方法
同じデリミターが複数回出現する複雑な文字列を扱う場合、最後のデリミターの右側のテキストを取得する必要がある場合があります。 理解しやすくするために、次のソースデータと希望する結果を見てみましょう。
上のスクリーンショットにあるように、A列にはエラーのリストが含まれています。 目標は、各文字列の最後のコロンの後にあるエラー記述を取り出すことです。 さらに複雑なことに、元の文字列には異なる数の区切り文字が含まれていることがあります。例えば、A3には3つのコロンが含まれていますがA5には1つだけです。
解決策を見つける鍵は、ソース文字列の最後のデリミター(この例では、最後に出現するコロン)の位置を決定することです。 これを行うには、いくつかの異なる関数を使用する必要があります。
- 元の文字列の区切り文字の数を取得する。 簡単な部分である。
- まず、LEN関数を使って文字列の全長を計算します: LEN(A2)
- 次に、区切り文字を含まない文字列の長さを、コロンの出現箇所をすべてゼロに置き換えるSUBSTITUTE関数を使って計算します: LEN(SUBSTITUTE(A2,":",""))
- 最後に、文字列の全長から区切り文字を除いた元の文字列の長さを引きます: LEN(A2)-LEN(SUBSTITUTE(A2,":",""))
計算式が正しく動作することを確認するために、別のセルに入力すると、結果はセルA2のコロンの数である2になります。
- 最後の区切り文字をユニークな文字に置き換える 文字列の最後の区切り文字の後に来るテキストを抽出するには、その最後の区切り文字を何らかの方法で「マーク」する必要があります。 ここでは、最後に現れるコロンを、元の文字列のどこにも現れない文字、たとえばポンド記号(#)に置き換えてみましょう。
ExcelのSUBSTITUTE関数の構文に慣れている方は、第4引数(instance_num)というオプションがあり、指定した文字の特定の出現箇所のみを置換できることを覚えているかもしれません。 また、すでに文字列中の区切り文字の数を計算しているので、別のSUBSTITUTE関数の第4引数に上記の関数を与えるだけで、文字列の区切り文字が置換できるようになります。
=substitute(a2,":", "#",len(a2)-len(substitute(a2,":","")))
この数式を別のセルに入れると、このような文字列が返されます。 ERROR:432#接続がタイムアウトしました。
- 文字列中の最後の区切り文字の位置を取得します。 最後の区切り文字をどの文字に置き換えたかによって、大文字小文字を区別しないSEARCHまたはFINDを使用して、文字列中のその文字の位置を判断します。 ここでは、最後のコロンを#記号に置き換えているので、次の式を使ってその位置を判断しています。
=search("#", substitute(a2,":", "#",len(a2)-len(substitute(a2,":",""))))
この例では、置換された文字列中の#の位置である10を返します。
- 最後のデリミタの右側の文字列を返す 文字列の最後のデリミタの位置がわかったので、あとは文字列の全長からその数字を引いて、元の文字列の最後からその文字数だけRIGHT関数に返してもらえばいいのです。
=right(a2,len(a2)-search("$",substitute(a2,":","$",len(a2)-len(substitute(a2,":","")))))
下のスクリーンショットに示すように、数式は完全に動作します。
大きなデータセットで、セルによって区切り文字が異なる場合、上記の数式をIFERROR関数で囲むと、エラーが発生する可能性を防ぐことができます。
=iferror(right(a2,len(a2)-search("$",substitute(a2,":","$",len(a2)-len(substitute(a2,":",""))))), a2)
ある文字列が、指定したデリミターを1つも含んでいない場合は、以下のスクリーンショットの6行目のように、元の文字列が返されます。
文字列から最初のN文字を削除する方法
ExcelのRIGHT関数は、文字列の末尾から部分文字列を抽出する以外に、文字列の先頭から一定数の文字を削除したい場合にも便利な機能です。
前の例で使ったデータセットで、各文字列の先頭にある「ERROR」という文字を削除して、エラー番号と説明文だけを残したい場合があります。 これを実現するには、文字列の全長から削除する文字数を引いて、その数を num_chars Excel RIGHT 関数の引数を指定します。
RIGHT( 列 , LEN( 列 )- 削除する文字数 )この例では、A2の文字列から最初の6文字(5文字とコロン)を削除するので、計算式は次のようになります。
=right(a2, len(a2)-6)
ExcelのRIGHT関数は数値を返すことができますか?
このチュートリアルの冒頭で述べたように、ExcelのRIGHT関数は、元の値が数値であっても常にテキスト文字列を返します。 しかし、数値データセットで作業していて、出力も数値にしたい場合はどうしたらよいでしょうか。 簡単な回避策は、数値を表す文字列を数値に変換するように特別設計されたVALUE関数にRight式をネストさせるというものです。
例えば、A2の文字列から最後の5文字(郵便番号)を取り出し、取り出した文字を数値に変換する場合は、以下の式を使用します。
=value(right(a2, 5))
A列では左揃えの文字列が、B列では右揃えの数字が表示されていることにご注目ください。
なぜRIGHT関数は日付で動作しないのですか?
ExcelのRIGHT関数は文字列を扱うように設計されていますが、Excelの内部システムでは日付は数字で表されるため、Right式では日、月、年など日付の個々の部分を取得することはできません。 これを実行しようとすると、日付を表す数値の下数桁が取得されるだけになってしまいます。
仮に日付がわかったとすると 2017年1月18日 という数式で年を抽出しようとすると、Excelのシステム上では2017年1月18日を表す数字42753の下4桁である2753という結果になります。
「という質問を受けることがありますが、以下の関数のいずれかを使用することで、日付のある部分を取得することができます。
- 日を抽出するDAY関数: =DAY(A1)
- MONTH関数で月を取得:=MONTH(A1)
- 年を引くYEAR関数:=YEAR(A1)
次の画面は、その結果を示したものです。
もし、あなたが 日付はテキスト文字列で表されます というのは、外部ソースからデータをエクスポートするときによくあることですが、RIGHT関数を使って、日付の特定の部分を表す文字列の最後の数文字を引き出すことを妨げるものは何もありません。
Excel RIGHT関数が動作しない - 原因と解決策
ワークシートでRightの数式が正しく動作しない場合、ほとんどの場合、次のいずれかの理由が考えられます。
- 1つ以上ある 後書きスペース セル内の余分なスペースを素早く削除するには、ExcelのTRIM関数またはCell Cleanerアドインを使用します。
- があります。 num_chars というのは 零下 もちろん、意図的に負の数を計算式に入れることはほとんどないでしょう。 num_chars 引数が他のExcel関数または異なる関数の組み合わせで計算され、右式が#VALUE!エラーを返す場合は、ネストした関数にエラーがないか確認してください。
- 元の値は 年月日 このチュートリアルをよく読んでいる方なら、RIGHT関数が日付を扱えない理由はもうお分かりでしょう。 前のセクションを読み飛ばした方は、「Excel RIGHT関数が日付を扱えない理由」で詳細をご覧ください。
このチュートリアルで取り上げた数式をより詳しくご覧になりたい方は、以下のサンプルワークブックをダウンロードしてください。 読んでいただきありがとうございました。そして、また来週のブログでお会いしましょう。
ダウンロード可能なもの
Excel RIGHT関数 - サンプル (.xlsx ファイル)