目次
次は、Google Sheetsの複数のセルから、テキスト、文字、数字、URL、メールアドレス、日付、時間など、さまざまなデータを一度に抽出する方法について説明します。
文字列からテキストや数値を抽出するGoogle Sheetsの数式
Google Sheetsの数式はすべてです。 テキスト&数字を追加し、様々な文字を削除するコンボもあれば、テキスト、数字、別の文字などを抽出するコンボもあります。
位置でデータを抽出:先頭/最後/中間 N文字
Google Sheetsのセルからデータを取り出そうとするとき、最も簡単に扱える関数がLEFT、RIGHT、MIDです。 これらは位置によってあらゆるデータを取得します。
Google Sheetsのセルの先頭からデータを抽出する
LEFT機能を使えば、最初のN文字を簡単に抜き出すことができます。
LEFT(文字列,[文字数])- 列 は、データを抽出したいテキストです。
- 文字数 は、左から順に取り出す文字数です。
ここでは最も簡単な例として、電話番号から国番号を取り除いてみましょう。
ご覧の通り、国番号はセルの先頭に6つの記号を取るので、必要な数式は以下の通りです。
=LEFT(A2,6)
ヒント.ArrayFormulaを使えば、全範囲から6文字を一度に取得することが可能です。
=ArrayFormula(LEFT(A2:A7,6))
Google Sheetsのセルの末尾からデータを抽出する
セルから最後のN文字を抜き出すには、代わりにRIGHT関数を使用します。
RIGHT(文字列,[文字数])- 列 は、やはりデータを抽出するためのテキスト(またはセル参照)です。
- 文字数 は、右から取る文字数でもあります。
同じ電話番号からその国の名前を出そう。
2文字しか取らないし、それこそ数式に書いてある通りです。
=RIGHT(A2,2)
ヒント:ArrayFormulaを使えば、Google Sheetsの全セルの末尾から一度にデータを抽出することも可能です。
=ArrayFormula(RIGHT(A2:A7,2))
Google Sheetsのセルの途中からデータを抽出する
セルの最初と最後からデータを抽出する関数があるなら、途中からデータを抽出する関数もあるはずだ。 そして、そうだ--あるのだ。
それはMIDと呼ばれるものです。
MID(string, starting_at, extract_length)- 列 - をクリックすると、真ん中の部分を取り出したいテキストが表示されます。
- 開始時刻 - データの取得を開始したい文字の位置を指定します。
- extract_length - は、引き出すべき文字数です。
同じ電話番号の例で、国番号や国の略称を除いた電話番号そのものを検索してみましょう。
国番号は6文字目で終わり、7文字目がダッシュなので、8桁目から数字を引っ張ってくる。 そして、合計8桁の数字を得ることになる。
=MID(A2,8,8)
ヒント:1つのセルを範囲全体に変更し、ArrayFormulaで囲むと、各セルの結果が一度に得られます。
=ArrayFormula(MID(A2:A7,8,8))
文字列からテキスト/数字を抽出する
文字列は、セルのどの部分にも存在し、文字数も異なるため、セルごとに異なる数式を作成しなければならない場合があります。
しかし、Google Sheetsは、文字列からテキストを抽出するのに役立つ他の機能を備えていなければ、Google Sheetsではありません。
ここでは、表計算ソフトが提供する可能性のある方法をいくつか確認してみましょう。
特定のテキストより前のデータを抽出する - LEFT+SEARCH
あるテキストの前にあるデータを抽出したいときは、LEFT + SEARCHを使用します。
- 左 は、セルの先頭から(左から)一定数の文字を返すために使用します。
- 検索 は、特定の文字/文字列を探し、その位置を取得します。
これらを組み合わせると-、LEFTはSEARCHが提案する文字数を返します。
ここでは例として、各「ea」の前にあるテキストコードをどのように抽出するか。
同じようなケースでも、この公式が役に立ちます。
=LEFT(A2,SEARCH("ea",A2)-1)
以下は、その計算式の内容です。
- SEARCH("ea",A2) は、A2 の 'ea' を探し、各セルについてその 'ea' が始まる位置 - 10 を返します。
- つまり、10番目の位置が'e'の位置となる。 しかし、'ea'の直前が欲しいので、その位置から1を引く必要がある。 さもなければ、'e'も返される。 そのため、最終的には9となる。
- 左 は、A2 を見て、最初の 9 文字を取得します。
テキストの後にデータを抽出する
また、ある文字列以降をすべて取得する手段もあります。 しかし、今回はRIGHTは役に立ちません。 代わりにREGEXREPLACEの出番となります。
ヒント:REGEXREPLACE は正規表現を使います。 正規表現を扱う準備が整っていない場合は、以下に説明するもっと簡単な方法があります。 REGEXREPLACE(テキスト, regular_expression, replacement)
- テキスト は、変更を加えたい文字列またはセルです。
- 正規表現 は、探しているテキストの一部を表す文字の組み合わせです
- かけかえ は、その代わりに取得したいもの テキスト
では、あるテキスト(私の例では「ea」)の後のデータを抽出するには、どのように使うのでしょうか。
簡単 - この数式を使って。
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
この計算式の具体的な仕組みを説明しましょう。
- A2 は、私がデータを抽出するセルです。
- "(.*)イア(.*)" は私の正規表現(マスクと呼んでもよい)である。 ea'を探し、他の文字はすべて括弧に入れる。 文字のグループは2つあり、'ea'より前は最初のグループ(.*)、'ea'より後は第2のグループ(.*)である。 マスク自体はすべてダブルクォートに入れられる。
- "$2" は、私が取得したいもの、つまり、前の引数から2番目のグループ(それゆえ、その番号は2)です。
補足:正規表現で使われる文字は、すべてこの特設ページに集められています。
Google Sheetsのセルから数値を抽出する
数字だけを抽出したい場合、その位置と、その前にあるもの & 後がどうでもいい場合はどうすればいいのでしょうか?
マスク(別名:正規表現)も有効です。 実際に、同じREGEXREPLACE関数で、正規表現を変えてみます。
=REGEXREPLACE(A2,"[^[:digit:]]", "")
- A2 は、これらの数値を取得したいセルです。
- "[^[:digit:]]"である。 は数字以外を受け付ける正規表現です。 この^caretという記号は、数字を例外とするものです。
- "" は、数字以外のすべてを「無」に置き換えます。 あるいは、完全に削除して、セルに数字だけを残します。 あるいは、数字を抽出します :)
数字などの文字を無視したテキストを抽出
同じように、Google Sheetsのセルからアルファベットのデータだけを取り出すことができます。 テキストを表す正規表現の短縮形は、according - alphaと呼ばれます。
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
この式は、文字(A-Z、a-z)以外のすべてを取り出して、文字通り「無」に置き換える。 別の言い方をすれば、文字だけを取り出してしまう。
Google Sheetsのセルからデータを抽出する数式不要の方法
Power Toolsアドオンは、様々なタイプのデータを数式なしで簡単に抽出する方法を探している方に最適です。
Power Toolsアドオンによる各種データの抽出
まず最初に紹介するのはExtractというツールで、この記事で皆さんが探しているもの、つまりGoogle Sheetsのセルから様々な種類のデータを抽出することができます。
ユーザーフレンドリーな設定
上記で取り上げたケースは、すべてアドオンで解決できるものばかりではありません。 使い勝手の良いツールです ので、処理したい範囲を選択し、必要なチェックボックスにチェックを入れるだけです。 数式も正規表現もない。
この記事の2つ目のポイントであるREGEXREPLACEと正規表現を覚えていますか? ここでは、アドオンで簡単にできることを紹介します。
エクストラオプション
ご覧のように、いくつかの 追加オプション (チェックボックスのみ)を使用することができます。 クイックオン/オフ を使えば、最も正確な結果を得ることができます。
- 必要な文字列の大文字と小文字のみを取得する。
- 各セルからすべてのオカレンスを引き出し、1つのセルまたは別の列に配置します。
- ソースデータの右側に、結果を示す新しい列を挿入します。
- 抽出されたテキストをソースデータから消去する。
異なる種類のデータを抽出する
Power Toolsは、特定の文字列の前/後/間、および最初/最後のN文字を抽出するだけでなく、次のようなデータも抽出します。
- 数字とその小数点以下の桁数は、小数点以下と千桁以下の桁数はそのままにしておきます。
あらゆるところから任意の文字列を抽出する
また、自分で正確なパターンを設定し、それを抽出に使用するオプションもあります。 マスクによる抽出 とそのワイルドカード文字である * と ? - を実行します。
- 例えば、次のようなマスクを使うと、括弧の間をすべて出すことができます。 (*)
- あるいは、IDに5つの数字しか入っていないSKUを取得する。 SKU?
- あるいは、下のスクリーンショットに示すように、各セルの「ea」以降をすべて引き出します。 ea*
タイムスタンプから日時を抽出する
おまけに、タイムスタンプから日付と時刻を抽出する小さなツールもあります - Split Date & Timeといいます。
そもそもタイムスタンプを分割するために作られたものですが、目的の1個を個別に取得することは全く問題ありません。
Google Sheetsのタイムスタンプから、日付と時刻のどちらを抽出したいかにチェックを入れ、次のコマンドを実行するだけです。 スプリット 必要な単位が新しい列にコピーされます(最後のチェックボックスも選択すると、元のデータと置き換わります)。
このツールはPower Toolsアドオンの一部でもあるので、Google Sheetsのセルから任意のデータを取得するために一度インストールすれば、完全にカバーされます。 もしそうでなければ、コメントを残していただければ、お手伝いしますよ :)