練習問題一覧 / 文字列

追跡コードから請求番号だけを取り出す(MID + FIND)

ふつう 文字列
問題文
ヒント 0/4
模範解答 2
–
テストケース
1
2
3
リセット
提出
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
インタラクティブなスプレッドシートを読み込み中...
セルと数式の計算エンジンを準備しています
○ 準備完了 ハイライトされたセルに数式を入力し、「提出」を押してください。

問題

問題文

A2:A5 の追跡コードは3つの部分からできています。接頭辞、角括弧の中の請求番号、国コードの接尾辞です。必要なのは真ん中だけ。A2 の番号を Ref セル B2 に入れてください。

番号の長さも国コードも変わります。位置を固定せず、2つの括弧を式で見つける必要があります。

問題のデータ

表でデータ全体を見る(選択・コピーできます)
この問題のデータ表
AB
1Tracking codeRef
2ORD[INV-4821]CN
3ORD[INV-4822]US
4ORD[INV-4823]DE
5ORD[INV-4824]FR

ポイント解説

MID(文字列, 開始位置, 文字数) は開始位置と長さの両方が必要です。FIND で開始位置(開き括弧の次)が分かり、2回使えば長さ(閉じ括弧の位置 - 開き括弧の位置 - 1)も分かります。FIND は大文字小文字を区別します。

解き方のヒント

回答は B2 に入力します。送信時は 3 通りの入力で数式を再実行するので、数値を直接書くと必ず失敗します。数式はセルを参照してください。

  1. 対象セルは B2
  2. FIND("[", A2) が開き括弧の位置で、番号はその次から始まる
  3. 長さは FIND("]", A2) - FIND("[", A2) - 1
  4. 形:=MID(?, ?, ?)——開始位置も長さも FIND から作る

模範解答

模範解答を表示(2 通り・まずは自分で試してみましょう)

方法1:開始位置に1つ、長さに2つの FIND

=MID(A2, FIND("[",A2)+1, FIND("]",A2)-FIND("[",A2)-1)

ORD[INV-4821]CN の場合、FIND("[") は 4 なので5文字目から。FIND("]") は 13 なので長さは 13 - 4 - 1 = 8。MID(A2, 5, 8) が INV-4821 を返します。

方法2:FIND の3つ目の引数で検索開始位置をずらす

=MID(A2, FIND("[",A2)+1, FIND("]",A2,FIND("[",A2))-FIND("[",A2)-1)

FIND("]", A2, FIND("[",A2)) は開き括弧の位置から閉じ括弧を探します。区切りではない ] が前の方に現れる文字列では、こちらの書き方が正解になります。

関数ガイド

MID · LEN

関連する練習問題

よくある質問

2つの文字の間のテキストを取り出すには?

MID と2つの FIND を組み合わせます:=MID(A2, FIND("[",A2)+1, FIND("]",A2)-FIND("[",A2)-1)。+1 で開き括弧を飛ばし、-1 で閉じ括弧を長さから除きます。

FIND と SEARCH のどちらを使う?

FIND は大文字小文字を区別し、ワイルドカードは使えません。SEARCH は区別せず、ワイルドカードも使えます。括弧のような区切りでは結果は同じなので、同じ式で大文字小文字を扱うなら FIND が無難です。