Excelで最初のテキスト値を一瞬で取り出す3つの方法【XLOOKUP・INDEX・ISTEXT】
「数値や空白が混ざった列から、最初のテキストだけを取り出したい」——そんな場面で手が止まっていませんか?
実は、ISTEXT関数を組み合わせた数式1行で、この問題はあっさり解決できます。この記事を読めば、Excelのバージョンに関係なく使える方法が分かり、今日から即座に業務へ応用できます。
この記事で使うサンプルデータ
記事全体を通して、以下の表を使います。プロジェクト進捗表のコメント列を想定したデータです。
| 行 | A列(コメント) |
|---|---|
| 1 | 101 |
| 2 | (空白) |
| 3 | 205 |
| 4 | (空白) |
| 5 | 対応中 |
| 6 | 1 |
| 7 | 承認済み |
| 8 | (空白) |
| 9 | 要確認 |
| 10 | 330 |
数値・空白・テキストが複数混在するこのデータから、「対応中」(最初のテキスト値)を取り出すのがゴールです。
なぜ通常の検索関数では対応できないのか
MINやMAXは数値専用のため、テキストの検出には使えません。VLOOKUPやMATCH単体では「テキストかどうか」を条件に検索できません。
解決の鍵は、ISTEXT関数です。ISTEXTはセルの値がテキストならTRUE、そうでなければFALSEを返します。これを検索条件として活用することで、「最初のテキスト値」をピンポイントで取得できるようになります。
方法① XLOOKUP + ISTEXT(Excel 365 / 2021 推奨)
最もシンプルで読みやすい方法です。
=XLOOKUP(TRUE, ISTEXT(A1:A10), A1:A10, "テキストなし")
動作の仕組み
ISTEXT(A1:A10)が各セルを判定し、{FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE}という配列を返すXLOOKUPがその配列の中で最初にTRUEになった位置(5行目)を見つける- 同じ位置の値「対応中」を返す
| 処理ステップ | 結果 |
|---|---|
| ISTEXT配列 | FALSE, FALSE, FALSE, FALSE, TRUE, ... |
| 取得する値 | 対応中 |
第4引数に"テキストなし"を指定することで、テキストが1件も見つからない場合のエラーも防げます。
向いている場面
- Excel 365 / 2021 環境
- 数式を極力シンプルに保ちたいとき
方法② INDEX + MATCH + ISTEXT(Excel 2016以前にも対応)
XLOOKUPが使えない環境での定番パターンです。
=IFERROR(INDEX(A1:A10, MATCH(TRUE, ISTEXT(A1:A10), 0)), "テキストなし")
※Excel 2016以前では Ctrl + Shift + Enter で配列数式として入力
動作の仕組み
ISTEXT(A1:A10)でTRUE/FALSEの配列を生成する(方法①と同じ)MATCH(TRUE, ..., 0)が最初のTRUEの相対位置(5)を返すINDEX(A1:A10, 5)でA5の値「対応中」を取得するIFERRORでエラー時に「テキストなし」を表示する
| 処理ステップ | 結果 |
|---|---|
| MATCHの返り値 | 5(5行目) |
| INDEXの取得値 | 対応中 |
向いている場面
- Excel 2010〜2019 環境
- 会社のPCなどXLOOKUPが使えない場合
方法③ VLOOKUP を使う場合(補足)
VLOOKUPはISTEXTを直接検索条件にできないため、作業列が必須です。
- B列に
=ISTEXT(A1)を入力してコピー(TRUE/FALSEが並ぶ) - C列にA列の値をそのままコピー
=VLOOKUP(TRUE, B1:C10, 2, FALSE)で検索する
手順が多く、シートが複雑になるため、実務では方法①か②を優先するのがおすすめです。どうしてもVLOOKUPしか使えない制約がある場合の最終手段と考えてください。
3つの方法を比較する
| 方法 | 対応バージョン | 作業列 | 簡潔さ | おすすめ度 |
|---|---|---|---|---|
| XLOOKUP + ISTEXT | 365 / 2021 | 不要 | ◎ | ★★★ |
| INDEX + MATCH + ISTEXT | 2010以降 | 不要 | ○ | ★★☆ |
| VLOOKUP + 作業列 | 全バージョン | 必要 | △ | ★☆☆ |
よくあるミスと対処法
⚠️ 数値が「文字列として保存」されているケース
Excelでは、見た目は数字でも「文字列として保存」されているセルが存在します。ISTEXTはその場合でもTRUEを返すため、意図しないセルが「最初のテキスト値」として検出されることがあります。
セルの左上に緑の三角マークが出ていたら要注意です。
対処法:数値文字列を除外する数式
=XLOOKUP(TRUE, ISTEXT(A1:A10)*(ISERROR(A1:A10*1)), A1:A10, "テキストなし")
この数式の動作原理:
A1:A10*1:各セルに1を掛ける。純粋な数値や数値文字列なら計算が成立し、日本語テキストはエラーになるISERROR(...):計算がエラーになったセル(=本物のテキスト)をTRUEに変換するISTEXT(...)*ISERROR(...):両方TRUEのセルだけが1(TRUE)になる
これにより、「承認済み」のような日本語テキストのみを対象に絞り込めます。
✅ 空白セルの扱い
ISTEXTは空白セルに対してFALSEを返します。空白を誤ってテキストと判定する心配はありません。
まとめ:あなたの環境に合った方法を選ぼう
| 状況 | 使うべき方法 |
|---|---|
| Excel 365 / 2021 を使っている | XLOOKUP + ISTEXT |
| Excel 2016以前の環境 | INDEX + MATCH + ISTEXT |
| 作業列を使ってもいい | VLOOKUP + 作業列(非推奨) |
| 数値文字列が混入している可能性がある | ISTEXT * ISERROR の組み合わせ |
まずはサンプルデータで動作を確認し、自分のシートのデータ範囲に置き換えて使ってみてください。数式をそのままコピーして、範囲だけ変更すればすぐに使えます。
次のステップとして、「最後のテキスト値を取得する方法」や「条件付きで特定の文字列を含むセルを検索する方法」も合わせて読むと、データ抽出の幅がさらに広がります。