概要
「このセル、中身は“文字列”として扱われているのか?」
「数字に見えるけど、実は文字列じゃない?」
「文字が入っている行だけを拾いたい/除外したい」
こういう“文字列かどうか”を判定するための関数が ISTEXT(イズテキスト)関数です。
役割はとてもシンプルで、
- 中身が「文字列」なら TRUE
- それ以外(数値・日付・空白・エラーなど)なら FALSE
を返します。
この TRUE / FALSE を、IF・FILTER・COUNTIF などと組み合わせることで
「文字列だけ対象にする」「文字列を除外する」といった処理が楽に書けるようになります。
ISTEXT の基本
書式と動き
基本形はこれだけです。
=ISTEXT(値)
値が「文字列」なら TRUE
文字列でなければ FALSE を返します。
具体的なイメージを挙げると、次のようになります。
=ISTEXT("ABC") ' TRUE(文字列)
=ISTEXT(100) ' FALSE(数値)
=ISTEXT("100") ' TRUE(文字列の「100」)
=ISTEXT("") ' TRUE(空文字も“文字列”)
=ISTEXT(A2) ' A2 の中身によって TRUE / FALSE
ポイントは「見た目ではなく、Excel がどう“型”を認識しているか」で判定されることです。
数字っぽく見えても、左寄せで入っていれば“文字列扱い”で TRUE になることがあります。
IF と組み合わせて「文字列のときだけ処理」する
文字列ならメッセージ、そうでなければ空白
たとえば A2 に入力される値について、
文字列が入っているときだけ「文字です」と表示し、それ以外は空白にしたい場合。
=IF(ISTEXT(A2), "文字です", "")
ISTEXT(A2) が TRUE(文字列)なら「文字です」、
FALSE(数値・日付・空白など)なら “”(空白)を返します。
数値が欲しいのに文字列が来たらエラーメッセージ
「ここは数値を入れてほしいセルなのに、文字列が入力されてしまう」
という状況で警告を出したい場合。
=IF(ISTEXT(B2), "数値を入力してください", "OK")
B2 が文字列なら「数値を入力してください」、
文字列以外(数値・日付など)なら「OK」と表示するイメージです。
文字列のときはそのまま、数値のときは別計算
「文字列が入っているときは、その文字を表示」
「数値が入っているときは、数値×10 を表示」
といった“型で処理を分ける”こともできます。
=IF(ISTEXT(C2), C2, C2*10)
C2 が文字列 → そのまま表示
C2 が文字列でない(数値など) → C2×10 を計算して表示
ISTEXT と FILTER の組み合わせで「文字列だけ抽出」
列の中から文字列が入っている行だけ抜き出す
たとえば A2:A100 に、数値や文字列が混ざっているとします。
この中から「文字列が入っている行だけ」を別の場所に一覧で出したい場合。
=FILTER(A2:A100, ISTEXT(A2:A100))
ISTEXT(A2:A100) が TRUE の行だけが抽出されます。
コードや名称だけを抽出したい、逆に数値だけに絞りたいときなどに便利です。
複数列の表から「名前が文字列の行だけ」を抜き出す
A2:C100 に表があり、
A列:名前(文字列)
B列:点数(数値)
C列:備考
とします。
名前列(A列)が「文字列になっている行だけ」を、表ごと D2 から抜き出したい場合。
=FILTER(A2:C100, ISTEXT(A2:A100))
A列が文字列の行だけ、A~C列まとめて抽出されます。
ISTEXT と COUNTIF(+SUM)で「文字列件数」をカウント
COUNTIF 自体は「文字列かどうか」で判定できませんが、
ISTEXT の TRUE / FALSE を 1 / 0 に変換することで、
「文字列の件数」を数えることができます。
範囲内の「文字列のセルの数」を数える
A2:A100 の中で、「文字列のセルはいくつあるか」を数えたい場合。
=SUM(--ISTEXT(A2:A100))
ここでのポイントは --(二重マイナス)です。
TRUE / FALSE を、それぞれ 1 / 0 に変換するおまじないです。
結果として、「ISTEXT が TRUE になったセルの数=文字列セルの件数」が求まります。
ISTEXT の“クセ”と注意点
“”(空文字)も文字列として TRUE
=ISTEXT("")
これは TRUE です。
つまり、「空文字を返す関数(IF で “” を返すなど)」も文字列扱いになります。
「見た目が空欄のセル」を完全に無視したいときは、
ISTEXT とあわせて
- そのセルが本当に空なのか
- それとも “” が入っているだけなのか
を意識する必要があります。
「数字に見える文字列」は TRUE
セルに「123」と入力していても、
左寄せで入っていて、数値として認識されていなければ ISTEXT は TRUE を返します。
=ISTEXT("123") ' TRUE
「数字のように見えるけど実は文字列」というデータを洗い出したいとき、
むしろ ISTEXT が役立ちます。
「日付」は数値扱いなので FALSE
日付は Excel の内部では“日付シリアル値”という数値として保存されているため、
日付セルに ISTEXT をかけると FALSE になります。
=ISTEXT(2025/1/1) ' FALSE(数値扱い)
日付を文字列として扱っているケース(テキスト形式で入力しているなど)だけ TRUE になります。
例題
問題1
A2 の値が「文字列」なら TRUE、「文字列以外」なら FALSE を返す ISTEXT の式を書いてください。
=ISTEXT(A2)
問題2
B2 が文字列のときは「文字です」、文字列以外のときは「文字ではありません」と表示する IF+ISTEXT の式を書いてください。
=IF(ISTEXT(B2), "文字です", "文字ではありません")
問題3
C2 に「本来は数値だけ入ってほしい」セルがあります。
C2 が文字列だった場合は「数値を入力してください」、文字列でない場合は空白を返す式を書いてください。
=IF(ISTEXT(C2), "数値を入力してください", "")
問題4
A2:A100 の中から「文字列が入っている行だけ」を B2 から抽出して表示する FILTER の式を書いてください。
=FILTER(A2:A100, ISTEXT(A2:A100))
問題5
D2:D100 にいろいろな値が入っています。
この範囲の中で「文字列であるセルの個数」を求める式を、ISTEXT と SUM を組み合わせて書いてください。
=SUM(--ISTEXT(D2:D100))
まとめ
ISTEXT は、
- セルが「文字列」かどうかを判定する
- TRUE(文字列) / FALSE(それ以外)を返す
だけの、とてもシンプルな関数です。
よく使う型は次の通りです。
文字列かどうかの判定だけをしたいとき
=ISTEXT(セル)
文字列のときだけ処理したいとき
=IF(ISTEXT(セル), 文字列用の処理, それ以外の処理)
文字列の行だけ抽出したいとき
=FILTER(範囲, ISTEXT(判定したい列範囲))
文字列セルの件数を数えたいとき
=SUM(--ISTEXT(範囲))
「数値か判定 → ISNUMBER」とセットで覚えると、
データの“型”に応じた処理・チェック・クリーニングが、
ぐっとやりやすくなります。
