接頭辞で請求書を数える(COUNTIF のワイルドカード)

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

問題

問題文

月末の締め処理で、取引先から出力した伝票が1列にまとまって届きました。請求書は INV- で始まり、発注書は PO-、返品は RET- です。経理が必要としているのは請求書の件数だけです。A2:A11 のうち請求書が何件あるかを数え、Invoice count のセル D2 に入力してください。

範囲全体をセル参照で指定し、来月の出力データを貼り替えても数式が正しく動くようにしてください。

問題のデータ

表でデータ全体を見る(選択・コピーできます)
この問題のデータ表
AD
1Order IDInvoice count
2INV-1001
3INV-1002
4PO-2001
5INV-1003
6RET-3001
7PO-2002
8INV-1004
9INV-1005
10RET-3002
11INV-1006

ポイント解説

COUNTIF には範囲と検索条件の文字列を指定します。条件の文字列の中の * は任意の長さの文字を表します。"INV-*" は「INV- で始まる」という意味です。"*INV*" のように両側に付けると RET-INV-77 も数えてしまいます。条件の比較は大文字と小文字を区別しません。

解き方のヒント

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

  1. 回答セルは D2 です
  2. 数える範囲は A2:A11 です
  3. 必要な接頭辞は INV- で、その後ろは * で表します
  4. 条件は文字列なので引用符が必要です:"INV-*"

模範解答

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

解法1:COUNTIF と接頭辞のワイルドカード

=COUNTIF(A2:A11,"INV-*")

COUNTIF は各 ID を "INV-*" と照合します。先頭の4文字が一致し、後ろは * が吸収します。10行のうち6行が請求書です。

解法2:SUMPRODUCT と LEFT(ワイルドカードなし)

=SUMPRODUCT(--(LEFT(A2:A11,4)="INV-"))

LEFT で各 ID の先頭4文字を取り出して "INV-" と比べ、二重のマイナスで TRUE/FALSE を 1/0 に変えて SUMPRODUCT で合計します。同じ件数になり、規則が「形」ではなく「位置」のときに使いやすい書き方です。

関数ガイド

関連する練習問題

よくある質問

特定の文字列で始まるセルを数えるには?

接頭辞とワイルドカードを条件にします:=COUNTIF(A2:A11,"INV-*")。* が接頭辞より後ろの任意の文字を吸収するので、INV-1001 も INV-9 も数えられます。

ここで "*INV*" だと数が合わないのはなぜですか?

両側に * を付けると「含む」という意味になり、「で始まる」にはならないからです。RET-INV-77 は INV- を含むので数えられてしまいます。種類を判定するときは先頭に固定します("INV-*")。

COUNTIF は大文字と小文字を区別しますか?

区別しません。"inv-*" でも "INV-*" でも同じ件数になります。区別したいときは SUMPRODUCT と EXACT を組み合わせます。