テクニカルライター きたみあきこ のホームページ
Office Kitami

Office Kitami内の講座ページは閉鎖予定です。
今後は、きたみあきこのOfficeブログ Officeのチカラ をご利用ください。

公開日:2009/11/24 | 最終更新日:2009/12/01
文字列操作関数

文字の長さを求める関数
LEN, LENB

文字列から部分文字列を取り出す関数
LEFT, LEFTB, RIGHT, RIGHTB, MID, MIDB

検索、置換、比較を行う関数
FIND, FINDB, SEARCH, SEARCHB, SUBSTITUTE, REPLACE, REPLACEB, EXACT

文字種を変換する関数
ASC, JIS, LOWER, UPPER, PROPER

表記を変換する関数
VALUE, TEXT, NUMBERSTRING, FIXED, YEN, DOLLAR, BAHTTEXT, T

その他の関数
TRIM, CLEAN, CONCATENATE, REPT, CHAR, CODE

文字列操作関数に関する基礎知識
文字数とバイト数、ワイルドカード文字

Excel 2002の新関数BAHTTEXT
関数 構文 / 使用例
レングス
LEN
文字数を求める
LENgth
=LEN(文字列)
文字列の文字数を求める。全角文字も半角文字も1文字と数える
=LEN("Excel")  →  5
=LEN("Excel関数")  →  7
レングスビー
LENB
バイト数を求める
LENgth Byte
=LENB(文字列)
文字列のバイト数を求める。全角文字を2バイト、半角文字を1バイトとして数える
=LENB("Excel")  →  5
=LENB("Excel関数")  →  9
関数 構文 / 使用例
レフト
LEFT
先頭から文字を取り出す
LEFT
=LEFT(文字列, 文字数)
文字列の先頭から文字数分の文字を取り出す。文字数を省略した場合は、1文字取り出す。文字数文字列の文字数より大きい場合は、文字列全体が返される
=LEFT("Excel関数",4)  →  Exce
=LEFT("エクセル2010",4)  →  エクセル
=LEFT("Excel関数")  →  E
=LEFT("Excel関数",100)  →  Excel関数
レフトビー
LEFTB
先頭から文字を取り出す
LEFT Byte
=LEFTB(文字列, バイト数)
LEFT関数と同様、ただし文字数をバイトで数える
=LEFTB("Excel関数",4)  →  Exce
=LEFTB("エクセル2010",4)  →  エク
ライト
RIGHT
末尾から文字を取り出す
RIGHT
=RIGHT(文字列, 文字数)
文字列の末尾から文字数分の文字を取り出す。文字数を省略した場合は、1文字取り出す。文字数文字列の文字数より大きい場合は、文字列全体が返される
=RIGHT("Excel関数",4)  →  el関数
=RIGHT("エクセル2010",4)  →  2010
=RIGHT("Excel関数")  →  
=RIGHT("Excel関数",100)  →  Excel関数
ライトビー
RIGHTB
末尾から文字を取り出す
RIGHT Byte
=RIGHTB(文字列, バイト数)
RIGHT関数と同様、ただし文字数をバイトで数える
=RIGHTB("Excel関数",4)  →  関数
=RIGHTB("エクセル2010",4)  →  2010
ミッド
MID
任意の位置から文字を取り出す
MIDdle
=MID(文字列, 開始位置, 文字数)
文字列開始位置から文字数分の文字を取り出す。開始位置は、先頭文字を1として数える。開始位置文字列の文字数より大きい場合、空白文字列「""」が返される。開始位置文字列の文字数より小さく、開始位置文字数の和が文字列の文字数を超える場合、開始位置以降のすべての文字列が返される
=MID("Excel関数",3,2)  →  ce
=MID("エクセル2010",3,2)  →  セル
=MID("Excel関数",100,2)  →  (空文字列)
=MID("Excel関数",3,100)  →  cel関数
ミッドビー
MIDB
任意の位置から文字を取り出す
MIDdle Byte
=MIDB(文字列, 開始位置, バイト数)
MID関数と同様、ただし文字数をバイトで数える
=MIDB("Excel関数",3,2)  →  ce
=MIDB("エクセル2010",3,2)  →  

赤字の引数は必須、青字の引数は省略可能です。

関数 構文 / 使用例
ファインド
FIND
文字列を検索する
FIND
=FIND(検索文字列, 対象, 開始位置)
対象の文字列から検索文字列を探し、最初に現れる位置(何文字目か)を返す。見つからなかった場合は、エラー値「#Value!」が返される。開始位置には、検索を何文字目から開始するかを指定する。省略した場合は1文字目から開始する。
SEARCH関数でも検索できるが、ワイルドカードを使用せず、英字の大文字と小文字を区別して厳密に検索したいときはFIND関数を使う
=FIND("開発","企画開発室")  →  3
=FIND("BC","ABCABC")  →  2
=FIND("BC","ABCABC",3)  →  5
=FIND("DE","ABCABC")  →  #Value!
=FIND("bc","ABCABC")  →  #Value! (大文字と小文字が区別される)
=FIND("B*","ABCABC")  →  #Value! (「*」を通常の文字とみなす)
=FIND("*","ABC*ABC")  →  4 (「*」を通常の文字とみなす)
ファインドビー
FINDB
文字列を検索する
FIND Byte
=FINDB(検索文字列, 対象, 開始位置)
FIND関数と同様、ただし文字数をバイトで数える
=FINDB("開発","企画開発室")  →  5
=FINDB("BC","ABCABC")  →  2
サーチ
SEARCH
文字列を検索する
SEARCH
=SEARCH(検索文字列, 対象, 開始位置)
対象の文字列から検索文字列を探し、最初に現れる位置(何文字目か)を返す。見つからなかった場合は、エラー値「#Value!」が返される。開始位置には、検索を何文字目から開始するかを指定する。省略した場合は1文字目から開始する。
FIND関数でも検索できるが、ワイルドカードを使用したり、英字の大文字と小文字を区別せずにあいまい検索したいときはSEARCH関数を使う
=SEARCH("開発","企画開発室")  →  3
=SEARCH("BC","ABCABC")  →  2
=SEARCH("BC","ABCABC",3)  →  5
=SEARCH("DE","ABCABC")  →  #Value!
=SEARCH("bc","ABCABC")  →  2 (大文字と小文字が区別されない)
=SEARCH("B*","ABCABC")  →  2 (「*」をワイルドカード文字とみなす)
=SEARCH("*","ABC*ABC")  →  1 (「*」をワイルドカード文字とみなす)
サーチビー
SEARCHB
文字列を検索する
SEARCH Byte
=SEARCHB(検索文字列, 対象, 開始位置)
SEARCH関数と同様、ただし文字数をバイトで数える
=SEARCHB("開発","企画開発室")  →  5
=SEARCHB("BC","ABCABC")  →  2
サブスティチュート
SUBSTITUTE
文字列を置換する
SUBSTITUTE
=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
文字列から検索文字列を探し、見つかった場合は置換文字列で置き換える。見つからなかった場合は元の文字列が返る。文字列内に検索文字列が複数ある場合、置換対象で指定した番号の検索文字列が置換される。置換対象を省略すると、すべて置換される
=SUBSTITUTE("ABCABC","CA","zz") → ABzzBC
=SUBSTITUTE("ABCABC","ca","zz") → ABCABC
=SUBSTITUTE("営業部営業課","営業","システム") → システム部システム課
=SUBSTITUTE("営業部営業課","営業","システム",1) → システム部営業課
=SUBSTITUTE("営業部営業課","営業","システム",2) → 営業部システム課
=SUBSTITUTE("企画開発室","開発","") → 企画室
(特定の文字列の削除)
リプレイス
REPLACE
文字列を置換する
REPLACE
=REPLACE(文字列, 開始位置, 文字数, 置換文字列)
文字列中の開始位置から文字数分を置換文字列で置き換える
=REPLACE("営業1課課長",3,2,"部")  →  営業部課長
=REPLACE("営業2課課長",3,2,"部")  →  営業部課長
=REPLACE("1234567",4,0,"-")  →  123-4567 (指定位置へ文字列挿入)
リプレイスビー
REPLACEB
文字列を置換する
REPLACE Byte
=REPLACEB(文字列, 開始位置, バイト数, 置換文字列)
REPLACE関数と同様、ただし文字数をバイトで数える
=REPLACEB("営業1課課長",5,3,"部")  →  営業部課長
イグザクト
EXACT
文字列を比較する
EXACT
=EXACT(文字列1, 文字列2)
文字列1文字列2が等しい場合はTRUE、等しくない場合はFALSEを返す。大文字と小文字、全角文字と半角文字は区別される
=演算子を使用して比較した場合、全角文字と半角文字は区別されるが、大文字と小文字は区別されない
=EXACT("EXCEL","EXCEL")  →  TRUE
=EXACT("EXCEL","Excel")  →  FALSE (大文字と小文字が区別される)
=EXACT("EXCEL","EXCEL")  →  FALSE (全角と半角が区別される)

赤字の引数は必須、青字の引数は省略可能です。

関数 構文 / 使用例
アスキー
ASC
全角文字を半角に変換する
ASCii
=ASC(文字列)
文字列中の全角の英字、数字、記号、カタカナを半角文字に変換する。半角に変換できない文字はそのまま返る
=ASC("WEB開発部(3F)")  →  WEB開発部(3F)
ジス
JIS
半角文字を全角に変換する
JIS
=JIS(文字列)
文字列中の半角の英字、数字、記号、カタカナを全角文字に変換する。全角に変換できない文字はそのまま返る
=JIS("WEB開発部(3F)")  →  WEB開発部(3F)
ロウアー
LOWER
大文字を小文字に変換する
LOWER
=LOWER(文字列)
文字列中の英字の大文字を小文字に変換する。変換できない文字はそのまま返る
=LOWER("new YEAR")  →  new year
アッパー
UPPER
小文字を大文字に変換する
UPPER
=UPPER(文字列)
文字列中の英字の小文字を大文字に変換する。変換できない文字はそのまま返る
=UPPER("new YEAR")  →  NEW YEAR
プロパー
PROPER
先頭だけを大文字に変換する
PROPER
=PROPER(文字列)
文字列中の英単語の先頭文字を大文字に、2文字目以降を小文字に変換する。変換できない文字はそのまま返る
=PROPER("new YEAR")  →  New Year
関数 構文 / 使用例
バリュー
VALUE
文字列を数値に変換する
VALUE
=VALUE(文字列)
数値や日付/時刻を表す文字列を数値に変換する
=VALUE("\1,234")  →  1234
=VALUE("2009年11月24日")  →  40141 (「2009/11/24」のシリアル値)
=VALUE("6:00 PM")  →  0.75 (「6:00 PM」のシリアル値)
テキスト
TEXT
指定の表示形式に変換する
TEXT
=TEXT(, 表示形式)
を指定した表示形式の文字列に変換する
=TEXT("2009/11/24","ggge年m月d日")  →  平成21年11月24日
=TEXT(1234,"\#,##0")  →  \1,234
ナンバーストリング
NUMBERSTRING
数値を漢数字に変換する
NUMBER STRING
隠し関数
=NUMBERSTRING(数値, 形式)
数値を漢数字の文字列に変換する。漢数字の種類は、引数形式で指定する。リボンやヘルプ、[関数の挿入]ダイアログに表示されない隠し関数
■引数 形式 の設定値
設定値説明
1漢数字(一、二、三)と位(十、百、千)で表す
2漢数字(壱、弐、参)と位(拾、百、阡)で表す
3漢数字(一、二、三)で表す
=NUMBERSTRING(1234000,1)  →  百二十三万四千
=NUMBERSTRING(1234000,2)  →  壱百弐拾参萬四阡
=NUMBERSTRING(1234000,3)  →  一二三四〇〇〇
フィックスト
FIXED
数値を桁区切り形式に変換する
FIXED
=FIXED(数値, 桁数, 桁区切り)
数値を指定した桁数で四捨五入した文字列に変換する。桁数を省略すると、「2」が指定されたものとみなされる。桁区切りを行うかどうかは、引数桁区切りで指定する
■引数 桁区切り の設定値
設定値説明
FALSE または 省略桁区切りを行う
TRUE桁区切りを行わない
=FIXED(1234.567)  →  1,234.57
=FIXED(1234.567,2)  →  1,234.57
=FIXED(1234.567,1)  →  1,234.6
=FIXED(1234.567,0)  →  1,235
=FIXED(1234.567,-1)  →  1,230
=FIXED(1234.567,-2)  →  1,200
=FIXED(1234.567,-2,TRUE)  →  1200
エン
YEN
数値を「\」付き形式に変換する
YEN
=YEN(数値, 桁数)
数値を指定した桁数で四捨五入して、「\」付きの桁区切り形式の文字列に変換する。桁数を省略すると、「0」が指定されたものとみなされる
=YEN(1234.567)  →  \1,234
=YEN(1234.567,1)  →  \1,234.6
=YEN(1234.567,0)  →  \1,235
=YEN(1234.567,-1)  →  \1,230
ダラー
DOLLAR
数値を「$」付き形式に変換する
DOLLAR
=DOLLAR(数値, 桁数)
数値を指定した桁数で四捨五入して、「$」付きの桁区切り形式の文字列に変換する。桁数を省略すると、「2」が指定されたものとみなされる
=DOLLAR(1234.567)  →  $1,234.57
=DOLLAR(1234.567,1)  →  $1,234.6
=DOLLAR(1234.567,0)  →  $1,235
=DOLLAR(1234.567,-1)  →  $1,230
バーツテキスト
BAHTTEXT
数値をタイ語の通貨形式に変換する
BAHT TEXT
Excel 2002以降
=BAHTTEXT(数値)
数値をタイ語の通貨形式の文字列に変換する
=BAHTTEXT(1234)
func201
テキスト
T
文字列に変換する
Text
=T()
が文字列のときはその文字列を、文字列でないときは空文字列「""」を返す
=T("abc")  →  abc
=T(123)  →  (空文字列)
=T(TRUE)  →  (空文字列)

赤字の引数は必須、青字の引数は省略可能です。

関数 構文 / 使用例
トリム
TRIM
スペースを削除する
TRIM
=TRIM(文字列)
文字列から全角スペースと半角スペースを削除する。ただし、単語間のスペースは1つ残す
=TRIM("    Excel VBA    ")  →  Excel VBA
=TRIM("    Excel    VBA    ")  →  Excel VBA
クリーン
CLEAN
制御文字を削除する
CLEAN
=CLEAN(文字列)
文字列から印刷できない制御文字を削除する
=CLEAN(A1)  →  (セルA1のセル内改行を削除)
func202
コンカティネート
CONCATENATE
文字列を結合する
CONCATINATE
=CONCATENATE(文字列1, 文字列2, ・・・)
引数で指定した文字列を結合する。引数は、2003以前のExcelでは30個、2007以降のExcelでは255個まで指定できる
=CONCATENATE(A1,B1,C1)  →  (セルA1、B1、C1の文字列を結合)
func203
リピート
REPT
文字を繰り返し表示する
REPeaT
=REPT(文字列, 繰り返し回数)
文字列繰り返し回数だけ繰り返す
=REPT("★",5)  →  ★★★★★
キャラクター
CHAR
文字コードを文字に変換する
CHARacter
=CHAR(数値)
数値を文字コードとみなして、対応する文字を返す。文字が割り当てられていない数値を指定すると、エラー値「#Value!」が返る
=CHAR(65)  →  A
=A1& CHAR(10) & B1  →  (セルA1とセルB1の文字列を改行を挟んで連結)
func204
コード
CODE
文字を文字コードに変換する
CODE
=CODE(文字列)
文字列の先頭文字の文字コードを返す
=CODE("A")  →  65
=CODE("Excel")  →  69

赤字の引数は必須、青字の引数は省略可能です。

文字の長さを表す単位には、文字数とバイト数があります。文字数は、単純に文字の個数を数えます。バイト数は、全角文字を2、半角文字を1として数えます。

次の関数は、文字の長さをバイト数で数えます。

LENB, LEFTB, RIGHTB, MIDB, FINDB, SEARCHB, REPLACEB

引数で指定したバイト数が全角文字の途中の位置に当たる場合、半角スペースが補われます。たとえば「=LEFTB("エクセル",5)」の戻り値は「エク 」(「エク」の後ろに半角スペース)、「=RIGHTB("エクセル",5)」の戻り値は「 セル」(「セル」の前に半角スペース)になります。

ワイルドカード文字とは、任意の文字列を表す文字のことです。文字列の検索に使用します。

■ワイルドカード文字
文字説明記述例 → 検索される文字列の例
*(アスタリスク) 0文字以上の任意の文字列を表す *区 → 区, 港区, 豊島区
*区* → 区, 港区, 豊島区, 区画, 港区芝浦
?(疑問符) 任意の1文字を表す ?区 → 港区, 北区
??区 → 豊島区, 品川区
~(チルダ) ワイルドカード文字を検索する 元気~? → 元気?
~*備考 → *備考

2009/11/24 : 公開
2009/12/01 : 隠し関数、関数の語源を追加