- 作成日 : 2025年10月27日
スプレッドシートで文字列を抽出するには?特定文字の前後から複数条件まで解説
Googleスプレッドシートで文字列を抽出する操作は、メールアドレスからドメインを取り出したり、住所から都道府県を切り出したりと、日常業務で頻繁に求められることもあるでしょう。
基本は LEFT/MID/RIGHT と FIND/SEARCH の組み合わせで多くのパターンを処理でき、さらに REGEXEXTRACT を使えば複雑な条件にも柔軟に対応できます。
本記事では、基本的な文字列抽出から、特定文字の前後の抽出、範囲指定による抽出、複数条件での高度な抽出まで、実践的な関数の使い方とテクニックを体系的に解説します。
目次
スプレッドシートで特定の文字列を抽出する方法は?
スプレッドシートで特定の文字列を抽出するには、MID関数、LEFT関数、RIGHT関数の基本3関数と、FIND関数、SEARCH関数を組み合わせることで、多くの抽出パターンを扱えます。
基本関数の使い方と特徴
文字列抽出の基本となる3つの関数を詳しく解説します。
LEFT関数は、文字列の左側(先頭)から指定した文字数を抽出します。
=LEFT(文字列, 文字数)
=LEFT(“東京都港区赤坂1-2-3”, 3) // 結果:東京都
RIGHT関数は、文字列の右側(末尾)から指定した文字数を抽出します。
=RIGHT(文字列, 文字数)
=RIGHT(“TEL:03-1234-5678”, 13) // 結果:03-1234-5678
MID関数は、文字列の指定位置から指定した文字数を抽出します。最も柔軟性が高い関数です。
=MID(文字列, 開始位置, 文字数)
=MID(“2024年01月15日”, 6, 2) // 結果:01
これらの関数は単独でも便利ですが、動的な位置を特定する関数と組み合わせることで真価を発揮します。
FIND関数とSEARCH関数による位置特定
文字列内の特定文字の位置を見つける関数です。
FIND関数は、大文字小文字を区別して検索します。
=FIND(検索文字列, 対象文字列, [開始位置])
=FIND(“@”, “[email protected]”) // 結果:5
SEARCH関数は、大文字小文字を区別せず、ワイルドカード(*、?)が使用可能です。
=SEARCH(検索文字列, 対象文字列, [開始位置])
=SEARCH(“tokyo”, “TOKYO-JAPAN”) // 結果:1
- 厳密な一致が必要な場合:FIND関数
- 柔軟な検索が必要な場合:SEARCH関数
- パターンマッチングが必要な場合:SEARCH関数でワイルドカード使用
実践的な抽出例:メールアドレスの処理
メールアドレスからユーザー名とドメインを抽出する実例です。
// A列にメールアドレスがある場合
// ユーザー名の抽出(@より前)
=LEFT(A2, FIND(“@”, A2) – 1)
// ドメインの抽出(@より後)
=MID(A2, FIND(“@”, A2) + 1, LEN(A2))
// トップレベルドメインの抽出(最後の.より後)
=RIGHT(A2, LEN(A2) – FIND(“~”, SUBSTITUTE(A2, “.”, “~”, LEN(A2) – LEN(SUBSTITUTE(A2, “.”, “”)))))
このように、基本関数を組み合わせることで、複雑な抽出も実現できます。
スプレッドシートで特定の文字より前を抽出する方法は?
特定の文字より前の文字列を抽出するには、LEFT関数とFIND/SEARCH関数を組み合わせ、区切り文字の位置を動的に特定して、その位置までの文字を取得します。
この技術は、ファイル名から拡張子を除く、URLからドメインを抽出するなど、多くの場面で活用されます。
基本パターン:単一区切り文字での抽出
最も一般的な、1つの区切り文字より前を抽出する方法です。
// 基本構文
=LEFT(文字列, FIND(区切り文字, 文字列) – 1)
// 実例:ファイル名から拡張子を除く
=LEFT(A2, FIND(“.”, A2) – 1)
// “document.pdf” → “document”
// エラー処理を含む完全版
=IFERROR(LEFT(A2, FIND(“.”, A2) – 1), A2)
区切り文字が見つからない場合のエラーを防ぐため、IFERROR関数でラップすることが重要です。
複数の同じ文字がある場合の処理
同じ区切り文字が複数ある場合、最初または最後の出現位置で抽出する方法です。
最初の区切り文字より前を抽出:
(A)プロトコルのみなら:
=LEFT(A2, FIND(“/”, A2) – 1) // “https://example.com/…
” → “https:”
(B)プロトコル+ドメインなら(正規表現が簡潔):
=REGEXEXTRACT(A2, “^[^/]+//[^/]+”) // → “https://example.com
”
(C)関数だけで位置計算する場合:
=LEFT(A2, FIND(“/”, A2, FIND(“//”, A2)+2) – 1) // 3つ目の「/」直前まで
いずれも IFERROR( … , A2) を併用すると、スラッシュが無いURLでも安全です。
最後の区切り文字より前を抽出:
// ファイルパスからファイル名を除く
=LEFT(A2, FIND(“♦”, SUBSTITUTE(A2, “/”, “♦”, LEN(A2) – LEN(SUBSTITUTE(A2, “/”, “”)))) – 1)
// “/home/user/documents/file.txt” → “/home/user/documents”
この技法では、SUBSTITUTE関数で最後の区切り文字を一時的に別の文字に置換してから検索します。
実用例:住所から都道府県を抽出
日本の住所から都道府県を抽出する実践的な例です。
// 都道府県の抽出(都・道・府・県で判定)
=IF(OR(MID(A2,3,1)=”都”, MID(A2,3,1)=”道”, MID(A2,3,1)=”府”, MID(A2,3,1)=”県”),
LEFT(A2, 3),
IF(MID(A2,4,1)=”県”, LEFT(A2, 4), A2))
// より汎用的な方法(正規表現を使用)
=REGEXEXTRACT(A2, “^(.+?[都道府県])”)
REGEXEXTRACT関数を使用すると、より柔軟で強力な抽出が可能になります。
スプレッドシートで特定の文字より後を抽出する方法は?
特定の文字より後の文字列を抽出するには、MID関数またはRIGHT関数とFIND/SEARCH関数を組み合わせ、区切り文字の位置から後ろの全ての文字を取得します。
データの後半部分の情報を取り出す際に頻繁に使用される技術です。
基本的な後方抽出のパターン
区切り文字より後の全ての文字を抽出する標準的な方法です。
// 基本構文
=MID(文字列, FIND(区切り文字, 文字列) + 1, LEN(文字列))
// 実例:メールアドレスからドメインを抽出
=MID(A2, FIND(“@”, A2) + 1, LEN(A2))
// “[email protected]” → “example.com”
// RIGHT関数を使用する方法
=RIGHT(A2, LEN(A2) – FIND(“@”, A2))
MIDは直感的で、RIGHTも同様に使えます。
最後の区切り文字より後を抽出
複数の区切り文字がある場合、最後の出現位置より後を抽出する方法です。
// ファイルパスからファイル名を抽出
=MID(A2, FIND(“♦”, SUBSTITUTE(A2, “/”, “♦”, LEN(A2) – LEN(SUBSTITUTE(A2, “/”, “”)))) + 1, LEN(A2))
// “/home/user/documents/file.txt” → “file.txt”
// 拡張子のみを抽出
=MID(A2, FIND(“♦”, SUBSTITUTE(A2, “.”, “♦”, LEN(A2) – LEN(SUBSTITUTE(A2, “.”, “”)))) + 1, LEN(A2))
// “document.final.pdf” → “pdf”
条件付き抽出の実装
特定の条件を満たす場合のみ抽出を行う高度な処理です。
// URLからクエリパラメータを抽出(?がある場合のみ)
=IF(ISERROR(FIND(“?”, A2)),
“”,
MID(A2, FIND(“?”, A2) + 1, LEN(A2)))
// 電話番号から市外局番を除いた部分を抽出
=IF(LEFT(A2, 1) = “0”,
MID(A2, FIND(“-“, A2) + 1, LEN(A2)),
A2)
条件分岐を組み込むことで、より柔軟な抽出処理が可能になります。
スプレッドシートで特定の文字から特定の文字までを抽出する方法は?
2つの区切り文字の間にある文字列を抽出するには、MID関数で開始位置と文字数を動的に計算し、入れ子になったFIND関数で両端の位置を特定します。
この技術は、括弧内の文字、タグ間のテキスト、区切られた項目の抽出など、構造化されたテキストの処理に不可欠です。
基本的な範囲抽出のパターン
2つの異なる区切り文字間の文字列を抽出する標準的な方法です。
// 基本構文
=MID(文字列, FIND(開始文字, 文字列) + 1, FIND(終了文字, 文字列) – FIND(開始文字, 文字列) – 1)
エラーに強い形:
=IFERROR( MID(A2, FIND(“(“,A2)+1, FIND(“)”,A2,FIND(“(“,A2)+1) – FIND(“(“,A2) – 1 ), “” )
※ IFERROR で欠落時は空文字に。
// 実例:括弧内の文字を抽出
=MID(A2, FIND(“(“, A2) + 1, FIND(“)”, A2) – FIND(“(“, A2) – 1)
// “製品名(ABC-123)” → “ABC-123”
// HTMLタグ間のテキストを抽出
=MID(A2, FIND(“>”, A2) + 1, FIND(“</”, A2) – FIND(“>”, A2) – 1)
// “<title>ページタイトル</title>” → “ページタイトル”
代替(読みやすく堅牢):
=REGEXEXTRACT(A2,”<title[^>]*>(.*?)</title>”)
※ 他タグでも同様にタグ名を置換。
同じ区切り文字での範囲抽出
開始と終了が同じ文字の場合の処理方法です。
// クォート間の文字列を抽出
=MID(A2, FIND(“”””, A2) + 1, FIND(“”””, A2, FIND(“”””, A2) + 1) – FIND(“”””, A2) – 1)
// ‘He said “Hello World” to me’ → “Hello World”
簡潔な代替:
=REGEXEXTRACT(A2,””([^”]*)””) // ダブルクォート内の文字
// 特定番目の区切り文字間を抽出(2番目と3番目の”-“の間)
=MID(A2,
FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 2)) + 1,
FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 3)) – FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 2)) – 1)
// “A-B-C-D-E” → “C”
実践例:構造化データの解析
実際のビジネスデータから必要な情報を抽出する例です。
// 商品コードから各要素を抽出
// 形式:[カテゴリ]-[メーカー]-[型番]-[色]
// 例:”ELEC-SONY-WH1000XM4-BLACK”
// カテゴリを抽出(最初の”-“まで)
=LEFT(A2, FIND(“-“, A2) – 1)
// メーカーを抽出(1番目と2番目の”-“の間)
=MID(A2, FIND(“-“, A2) + 1, FIND(“-“, A2, FIND(“-“, A2) + 1) – FIND(“-“, A2) – 1)
// 型番を抽出(2番目と3番目の”-“の間)
=MID(A2,
FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 2)) + 1,
FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 3)) – FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, 2)) – 1)
// 色を抽出(最後の”-“より後)
=MID(A2, FIND(“♦”, SUBSTITUTE(A2, “-“, “♦”, LEN(A2) – LEN(SUBSTITUTE(A2, “-“, “”)))) + 1, LEN(A2))
スプレッドシートで特定の文字を複数条件で抽出する高度な方法は?
複数条件での文字列抽出には、IF関数やIFS関数による条件分岐、REGEXEXTRACT関数による正規表現、QUERY関数によるデータベース的処理を組み合わせて、複雑な要件に対応します。
実務では単純な抽出だけでなく、条件に応じた柔軟な処理が求められることが多くあります。
条件分岐による動的抽出
複数の条件に基づいて異なる抽出方法を適用する方法です。
// データ形式に応じた抽出
=IFS(
ISNUMBER(SEARCH(“@”, A2)), MID(A2, 1, FIND(“@”, A2) – 1), // メールアドレスの場合
ISNUMBER(SEARCH(“-“, A2)), LEFT(A2, FIND(“-“, A2) – 1), // ハイフン区切りの場合
ISNUMBER(SEARCH(“/”, A2)), RIGHT(A2, LEN(A2) – FIND(“/”, A2)), // スラッシュ区切りの場合
TRUE, A2 // どれにも該当しない場合)
// 文字数による条件付き抽出
=IF(LEN(A2) > 10,
MID(A2, 5, 6), // 10文字を超える場合は5文字目から6文字
LEFT(A2, 3)) // 10文字以下の場合は先頭3文字
正規表現(REGEX)による高度な抽出
REGEXEXTRACT関数を使用した柔軟で強力な抽出方法です。
// 数字のみを抽出
=REGEXEXTRACT(A2, “d+”)
// “ABC123DEF456” → “123”(最初の数字群)
// すべての数字を連結して抽出
=REGEXREPLACE(A2, “[^0-9]”, “”)
// “ABC123DEF456” → “123456”
// 日本語のみを抽出
=REGEXEXTRACT(A2, “[ぁ-んァ-ヶー一-龠]+”)
// 特定パターンの抽出(郵便番号)
=REGEXEXTRACT(A2, “d{3}-?d{4}”)
// “東京都港区赤坂1-2-3 〒107-0052” → “107-0052″
// 複数のグループを同時抽出
ユーザー名とドメインを別列に出す方法(2通り)
(A)REGEXEXTRACT を2回使う:
=REGEXEXTRACT(A2,”^([^@]+)”) // ユーザー名
=REGEXEXTRACT(A2,”@(.+)$”) // ドメイン
(B)SPLIT を使う:
=SPLIT(A2,”@”) // 左列=ユーザー名、右列=ドメイン
- d : 数字
- w : 英数字とアンダースコア
- + : 1回以上の繰り返し
- * : 0回以上の繰り返し
- ? : 0回または1回
- [] : 文字クラス
- () : グループ化
複数セルからの統合抽出
複数のセルから条件に合う文字列を抽出して統合する方法です。
// 配列数式による一括抽出
=ARRAYFORMULA(IF(A2:A100 <> “”,
LEFT(A2:A100, FIND(“-“, A2:A100 & “-“) – 1),””))
// FILTER関数と組み合わせた条件付き抽出
=FILTER( ARRAYFORMULA( IFERROR( MID(A2:A100, FIND(“:”, A2:A100&”:”)+1, 10^6 ), “” ) ), ISNUMBER(SEARCH(“重要”, A2:A100)) )
※ A2:A100&”:” で“無い場合は末尾のコロン”にし、IFERROR で空文字に退避。10^6 は「末尾まで」を簡便に指定。
// QUERY関数による条件付き抽出
=QUERY(A2:B100,
“SELECT A WHERE B CONTAINS ‘完了’ AND A CONTAINS ‘@'”)
カスタム関数による複雑な抽出
Google Apps Scriptで独自の抽出関数を作成する方法です。
/**
* 複数条件で文字列を抽出するカスタム関数
* @param {string} text – 対象文字列
* @param {string} mode – 抽出モード
* @return {string} 抽出結果
* @customfunction
*/
function CUSTOM_EXTRACT(text, mode) {
if (!text) return “”;
switch(mode) {
case “email_domain”:
// メールアドレスからドメインを抽出
const match = text.match(/@(.+)/);
return match ? match[1] : “”;
case “japanese_only”:
// 日本語のみを抽出
return text.replace(/[^u3040-u309Fu30A0-u30FFu4E00-u9FAF]/g, “”);
case “numbers_sum”:
// 文字列内の数字を合計
const numbers = text.match(/d+/g);
return numbers ? numbers.reduce((sum, n) => sum + parseInt(n), 0) : 0;
case “between_brackets”:
// すべての括弧内文字を配列で返す
const matches = text.match(/[([^]]+)]/g);
return matches ? matches.map(m => m.slice(1, -1)).join(“, “) : “”;
default:
return text;}}
この記事をお読みの方におすすめのガイド5選【部署別紹介】
最後に、この記事をお読みの方によく活用いただいている人気の資料・ガイドを紹介します。すべて無料ですので、ぜひお気軽にご活用ください。
経理担当者向け
①Excel関数集 32選まとめブック
経理担当者の方をはじめ、ビジネスパーソンが知っておきたい便利なExcel関数集を初級~上級までギュッと網羅。新人社員の研修用などにもお使いいただけます。Google スプレッドシートならではの関数もご紹介しています。
②勘定科目・仕訳辞典(税理士監修)
勘定科目・仕訳に関する基本知識、および各勘定科目の仕訳例を具体的かつ網羅的にまとめた、50ページを超えるガイドを無料で提供しております。お手元における保存版としてでだけでなく、従業員への印刷・配布用としてもぜひご活用ください。
人事労務担当者向け
①入社・退職・異動の手続きガイドブック
書類の回収・作成・提出など手間のかかる入社・退職・異動(昇給・昇格、転勤)の手続き。
最新の制度をもとに、よくある質問やチェックポイントを交えながら、各手続きに必要な情報をまとめた人気のガイドですす。
②社会保険・労働保険の手続きガイド
企業において社会保険および労働保険の加入・喪失手続きは必ず発生し、手続きを誤れば保険事故が発生した際に従業員が不利益を被る可能性があります。
各保険の基本的な手続き方法を入社・退職・異動のシーン別にギュッとまとめた分かりやすいガイドです。
総務・法務担当者向け
契約書ひな形まとめ30選
業務委託契約書や工事請負契約書…など各種契約書や、誓約書、念書・覚書、承諾書・通知書…など、使用頻度の高い30個のテンプレートをまとめた、無料で使えるひな形パックです。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
DCOUNT関数の使い方:条件付きで数値の件数を集計する
DCOUNT関数は、データベース形式の表から指定した条件に一致するレコードの数値セルをカウントする関数です。売上データの件数集計、在庫数量の登録確認、成績データの有効件数カウント、品質検査の測定値集計など、数値データの件数を条件付きで数える…
詳しくみるスプレッドシートのセルの書式設定とは?基本から応用まで見やすい表作成の方法
Googleスプレッドシートのセルの書式設定を使いこなすことで、数字の羅列を見やすくでき、ミスの防止にもつながります。例えば、数値にカンマを付けたり、負の数を赤字で示したりといったようなことです。 本記事では、セルの書式設定の基本から、実務…
詳しくみるスプレッドシートでセルや行数を効率的にカウントするには?
スプレッドシートでデータを扱う際、セルや行数を正確に把握することは分析や管理の基本です。数値データの件数を数える COUNT 関数、全データを対象とする COUNTA 関数、条件付きの COUNTIF などを使い分けることで、状況に応じた効…
詳しくみるスプレッドシートでシートやセルをロック・保護するには?
Googleスプレッドシートで重要なデータを扱う際、誤った編集や意図しない変更を防ぐため、特定のシートやセルを保護したいという場面は多いでしょう。特にチームで共同作業を行う場合や、計算式を含む重要な領域を保護したい場合には、シートや範囲の保…
詳しくみるスプレッドシートで閲覧履歴を確認・非表示(記録停止)にするには?PC・スマホ別に解説
Googleスプレッドシートを複数人で共有して作業する際、「誰がいつファイルを見たか」が気になった経験はないでしょうか。スプレッドシートには『アクティビティ ダッシュボード』という機能があり、Google Workspace(会社・学校)ア…
詳しくみるTRUNC関数の使い方!数値の切り捨て、切り上げ切り捨て方法を解説
ExcelのTRUNC関数(読み方:トランク関数)は、指定した桁数で数値を切り捨てる関数です。 この記事では、TRUNC関数の基本的な使い方から、INT関数やROUNDDOWN関数との違い、具体的な利用シーンや注意点までを初心者にもわかりや…
詳しくみる



