Excel関数 逆引き集 | 文字列か判定 → ISTEXT

Excel VBA Excel
スポンサーリンク

概要

「このセル、中身は“文字列”として扱われているのか?」
「数字に見えるけど、実は文字列じゃない?」
「文字が入っている行だけを拾いたい/除外したい」

こういう“文字列かどうか”を判定するための関数が 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」とセットで覚えると、
データの“型”に応じた処理・チェック・クリーニングが、
ぐっとやりやすくなります。

タイトルとURLをコピーしました