最後のコードから次の発注番号を出す(MID + VALUE)
テストケース
1
2
3
リセット
提出
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
○ 準備完了 ハイライトされたセルに数式を入力し、「提出」を押してください。
テストケース
1
2
3
リセット
提出
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" という文字列ではなく本物の数値である必要があります。次の工程で計算に使うためです。
問題のデータ
表でデータ全体を見る(選択・コピーできます)
| A | B | |
|---|---|---|
| 1 | PO code | Next number |
| 2 | PO-2026-0042 | |
| 3 | PO-2026-0043 | |
| 4 | PO-2025-0199 |
ポイント解説
RIGHT(A2, 4) で連番を取り、VALUE で数値にします。文字列 "0042" に 1 を足すと "00421" になるためです。FIND を2回使う MID はより正確な方法で、連番は2つ目のハイフンの後ろから始まるので、コードの長さを仮定せずに済みます。先頭のゼロがあるため、文字列と数値は同じ値ではありません。
解き方のヒント
回答は B2 に入力します。送信時は 3 通りの入力で数式を再実行するので、数値を直接書くと必ず失敗します。数式はセルを参照してください。
- 対象セルは B2
- 連番は A2 の末尾4文字
- 文字列に1を足すと連結になる——先に数値へ
- 形:=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 でその間を切り出します。位置を固定すると、年や接頭辞の桁数が変わった瞬間に壊れます。