練習問題一覧 / 文字列

最後のコードから次の発注番号を出す(MID + VALUE)

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

問題

問題文

発注コードは PO-<年>-<連番> の形です。次の1件は A2 の連番を続ける必要があり、1 から振り直しません。連番は末尾4文字です。次の連番を数値として Next number セル B2 に入れてください。

結果は "0043" という文字列ではなく本物の数値である必要があります。次の工程で計算に使うためです。

問題のデータ

表でデータ全体を見る(選択・コピーできます)
この問題のデータ表
AB
1PO codeNext number
2PO-2026-0042
3PO-2026-0043
4PO-2025-0199

ポイント解説

RIGHT(A2, 4) で連番を取り、VALUE で数値にします。文字列 "0042" に 1 を足すと "00421" になるためです。FIND を2回使う MID はより正確な方法で、連番は2つ目のハイフンの後ろから始まるので、コードの長さを仮定せずに済みます。先頭のゼロがあるため、文字列と数値は同じ値ではありません。

解き方のヒント

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

  1. 対象セルは B2
  2. 連番は A2 の末尾4文字
  3. 文字列に1を足すと連結になる——先に数値へ
  4. 形:=VALUE(RIGHT(?, ?)) + 1

模範解答

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

方法1:RIGHT と VALUE

=VALUE(RIGHT(A2, 4)) + 1

RIGHT(A2,4) は "0042"、VALUE で 42 になり、1 を足して 43。VALUE を忘れると "00421" になります。典型的な文字列+数値のバグです。

方法2:2つ目のハイフンの後ろを MID

=VALUE(MID(A2, FIND("-", A2, FIND("-", A2) + 1) + 1, 4)) + 1

内側の FIND が1つ目のハイフンを見つけ、外側はその次から2つ目を探すので、MID はその1文字後ろから始まります。答えは同じで、年の桁数が変わっても壊れません。

関数ガイド

関連する練習問題

よくある質問

43 ではなく 421 になるのはなぜ?

連番が文字列なので、1 を足すと連結になります。先に VALUE で包みます。

コードの一部を確実に取り出すには?

FIND で区切りを見つけ、MID でその間を切り出します。位置を固定すると、年や接頭辞の桁数が変わった瞬間に壊れます。