「製品コードを比較したら一致しているはずなのに数式がFALSEを返す」「セルに進捗バーを表示して視覚的なレポートを作りたい」——この2つの悩みを解決するのがEXACT関数とREPT関数です。EXACT関数は大文字・小文字を区別した厳密な文字列照合を行い、REPT関数は同じ文字を指定回数繰り返してセル内グラフや視覚的インジケーターを作成できます。
等号演算子(=)による文字列比較はExcelが大文字・小文字を同一視するため、「ABC」と「abc」はTRUEと判定されます。製品コード・バーコード・パスワードのように大文字・小文字が意味を持つデータでは、EXACT関数による照合が必須です。一方REPT関数は「●」や「■」などの記号を繰り返すだけで、ピボットテーブルを使わずに視覚的なデータ表示が実現します。
本記事では、EXACT関数の基本構文・等号との違い・IF組み合わせパターン・データ照合の実務活用、REPT関数の基本構文・セル内バーグラフ・進捗表示・評価星の実装、よくあるエラーと対処法、MOS Excel試験の出題ポイントを体系的に解説します。
EXACT関数の基本構文
EXACT関数の構文は次の通りです。
=EXACT(文字列1, 文字列2)
| 引数 | 説明 | 省略 |
|---|---|---|
| 文字列1 | 比較元の文字列またはセル参照 | 必須 |
| 文字列2 | 比較先の文字列またはセル参照 | 必須 |
2つの文字列が大文字・小文字・全角・半角も含めて完全に一致するときTRUE、1文字でも異なるときFALSEを返します。スペースの有無も区別します。
=EXACT("ABC", "ABC") ' → TRUE
=EXACT("ABC", "abc") ' → FALSE(大文字・小文字が異なる)
=EXACT("ABC", "ABC ") ' → FALSE(末尾スペースが異なる)
=EXACT("ABC", "ABC") ' → FALSE(全角・半角が異なる)
セル参照を使う基本例:A2に入力されたコードとB2の正解コードを照合します。
=EXACT(A2, B2)
結果がTRUEなら完全一致、FALSEなら不一致です。
等号演算子(=)との決定的な違い
Excelの等号演算子(=)で文字列を比較すると、大文字と小文字は同一視されます。これはExcelの設計上の仕様です。
| 数式 | 結果 | 理由 |
|---|---|---|
| =A2=B2(A2=”ABC”, B2=”abc”) | TRUE | 等号演算子は大文字・小文字を区別しない |
| =EXACT(A2, B2)(同上) | FALSE | EXACT関数は大文字・小文字を厳密に区別する |
| =A2=B2(A2=”ABC”, B2=”ABC “) | FALSE | 末尾スペースは等号でも区別される |
| =EXACT(A2, B2)(同上) | FALSE | 末尾スペースも区別する |
等号演算子が便利な場面は多いですが、「Aa」「aA」「AA」「aa」をすべて別のコードとして区別しなければならない業務では等号は使えません。製品コード・バーコード・シリアルナンバー・パスワード検証など、ケースセンシティブ(大文字小文字敏感)なデータ照合にはEXACTが必須です。
IF+EXACT:照合結果でメッセージを出し分ける
EXACT単体ではTRUE/FALSEしか返りませんが、IF関数と組み合わせると照合結果に応じたメッセージや処理を出し分けられます。
' A2の入力コードとB2のマスターコードが完全一致するか確認
=IF(EXACT(A2, B2), "一致", "不一致")
この数式はA2とB2が大文字・小文字まで完全に一致するとき「一致」、そうでなければ「不一致」を表示します。
' 商品コードの一致確認(空白セルはスキップ)
=IF(A2="", "", IF(EXACT(A2, B2), "OK", "要確認"))
空白行を考慮して、A2が空白のときは何も表示しない構成にしています。データ入力後の自動チェック欄として設置するとミス検出が効率化します。
COUNTIF的な活用:EXACT+SUMPRODUCTで件数を数える
COUNTIFは大文字・小文字を区別しないため、厳密な件数カウントにはSUMPRODUCT+EXACTを組み合わせます。
' A2:A100の中で"ProductA"と厳密に一致するセルの件数
=SUMPRODUCT(--EXACT(A2:A100, "ProductA"))
--(ダブルマイナス)はTRUE/FALSEを1/0に変換する演算子です。EXACT関数が配列を返すため、SUMPRODUCTで合計することで大文字・小文字を区別したカウントが実現します。
EXACT関数の実務パターン
パターン1:製品コードのマスター照合
製品コードに「A001」「a001」の両方が存在し、等号で比較すると誤って一致と判定されるケースです。
' C列に照合結果を出す(A列=入力コード、B列=マスターコード)
C2: =IF(EXACT(A2, B2), "✓", "✗ 不一致")
製品コードが「A001-BB」と「A001-Bb」のような微妙な違いを含む場合も、EXACTは確実に検出します。
パターン2:入力規則と組み合わせてデータ品質を担保する
「データ」タブの「データの入力規則」でユーザー設定の数式にEXACTを使うと、特定の書式以外を入力拒否できます。
- 入力規則を設定したいセル範囲(例:A2:A100)を選択する
- 「データ」タブ→「データの入力規則」を開く
- 「設定」タブの「入力値の種類」で「ユーザー設定」を選ぶ
- 数式欄に入力する(例:特定の接頭辞「PRD-」を強制する場合)
' 先頭3文字が「PRD」であることを確認(大文字強制)
=EXACT(LEFT(A2,3), "PRD")
この入力規則を設定すると、「PRD-001」は通過しますが「prd-001」「Prd-001」は拒否されます。コードの書式統一に活用できます。
パターン3:2つのリストの差分を見つける
A列の新リストとB列の旧リストを照合し、変更されたコードを特定します。
' A2とB2が厳密に一致しない行を「変更あり」とマーク
=IF(EXACT(A2, B2), "", "変更あり")
この数式をC列に設定し、C列でフィルターをかけると「変更あり」の行だけを抽出できます。等号でなくEXACTを使う理由は、「ケース変更(大文字→小文字)」も変更として検出するためです。
REPT関数の基本構文
REPT関数の構文は次の通りです。
=REPT(文字列, 繰り返し回数)
| 引数 | 説明 | 省略 |
|---|---|---|
| 文字列 | 繰り返す文字列(1文字でも複数文字でも可) | 必須 |
| 繰り返し回数 | 繰り返す回数(0以上の整数。0を指定すると空文字になる) | 必須 |
基本例:
=REPT("★", 3) ' → ★★★
=REPT("●", 5) ' → ●●●●●
=REPT("-", 10) ' → ----------
=REPT("AB", 3) ' → ABABAB(複数文字も繰り返せる)
繰り返し回数に数値が入ったセルを指定すると、セルの値に応じて動的に変化するビジュアル表示が作れます。繰り返し回数に小数を指定した場合、Excelは自動的に切り捨てます(例:3.7→3回)。
REPT関数でセル内バーグラフを作る
REPT関数の代表的な活用例がセル内バーグラフです。スパークラインとは異なり、テキストとして表示されるため印刷時にもデザインが崩れません。
基本的なセル内バーグラフ
A列に売上金額(例:最大1,000万円)がある場合、B列にバーグラフを表示します。
' A2の値を最大10本のバーで表示(100万円=1本)
=REPT("■", ROUND(A2/100, 0))
A2が350(万円)なら「■■■■」が表示されます。フォントを「Meiryo」や「MS ゴシック」などの等幅フォントにすると、バーの幅が揃ってグラフらしく見えます。
最大値基準の相対バーグラフ
リスト内の最大値を基準として、相対的な長さのバーを表示します。
' A2:A10の最大値を10本バーとして、A2の相対バーを表示
=REPT("▮", ROUND(A2/MAX($A$2:$A$10)*10, 0))
$記号で最大値の参照範囲を絶対参照にしているため、数式を下にコピーしても比較基準がずれません。各行のバー長が一目で比較でき、ピボットテーブルを使わないシンプルなランキング表示として活用できます。
REPT関数で進捗バーを作る
プロジェクト進捗(0%~100%)を視覚化する進捗バーをREPTで実装します。
' A2に進捗率(0.0~1.0)が入っている場合、10段階バーを表示
=REPT("█", ROUND(A2*10, 0)) & REPT("░", 10-ROUND(A2*10, 0))
進捗60%の場合、「██████░░░░」のように塗り部分と空白部分を組み合わせた進捗バーが表示されます。&(文字列結合演算子)で「塗り済み部分+未完了部分」を結合しています。
バリエーション例:
' ●と○の組み合わせ(進捗率A2が0%~100%の想定、5段階)
=REPT("●", ROUND(A2/20, 0)) & REPT("○", 5-ROUND(A2/20, 0))
| 進捗率 | 表示例(5段階●○) |
|---|---|
| 0% | ○○○○○ |
| 20% | ●○○○○ |
| 60% | ●●●○○ |
| 80% | ●●●●○ |
| 100% | ●●●●● |
進捗管理表やタスクリストに設置すると、数値だけでは伝わりにくい全体感を視覚的に把握できます。
REPT関数で評価星(★☆)を表示する
評価値(1~5)を星マークで表示するのもREPTの典型的な活用例です。
' A2に評価値(1~5の整数)が入っている場合
=REPT("★", A2) & REPT("☆", 5-A2)
評価3なら「★★★☆☆」と表示されます。
' 評価が0~10の場合(5段階に変換して表示)
=REPT("★", ROUND(A2/2, 0)) & REPT("☆", 5-ROUND(A2/2, 0))
顧客満足度アンケート結果・商品レビュー集計・社員評価シートなど、「数値を直感的に把握したい」場面で有効です。セルの書式設定でフォントを変えても記号はそのまま表示されるため、レポートのデザイン統一がしやすい利点があります。
REPT関数でゼロ埋め・文字揃えを行う
コードや番号を固定桁数にゼロ埋めするとき、TEXT関数の代替としてREPTを使う方法があります。
' A2の数値を6桁ゼロ埋め(例:42 → "000042")
=REPT("0", 6-LEN(TEXT(A2, "0"))) & TEXT(A2, "0")
LEN関数で元の数字の桁数を調べ、不足分だけ「0」を前に付けています。TEXT関数単体でも「000000」のような書式コードで同様の結果を得られますが、REPTを使うと桁数を数式で動的に変更できる柔軟性があります。
等幅フォント(Courier New等)環境で右揃えのテキスト表を作りたい場合は、逆方向にスペースを付けることもできます。
' 最大20文字のラベルを右揃えに見せる(等幅フォント前提)
=REPT(" ", 20-LEN(A2)) & A2
EXACT・REPTを組み合わせた実務パターン
コード照合結果をバーで視覚化する
EXACT照合の結果に応じてREPTで視覚フィードバックを与えるパターンです。
' A列に入力コード、B列に正解コード。C列にEXACT判定、D列にビジュアル
C2: =EXACT(A2, B2)
D2: =IF(C2, "✓ " & REPT("█", 10), "✗ " & REPT("░", 10))
一致した行は「✓ ██████████」、不一致の行は「✗ ░░░░░░░░░░」と表示されます。大量データの照合作業でどの行に問題があるかを素早く視認できます。
照合成功率をバーで表示する
照合リスト全体の成功率を進捗バーで表示します。
' 照合成功件数と総件数から成功率を算出してバー表示
成功件数: =SUMPRODUCT(--EXACT(A2:A100, B2:B100))
総件数: =COUNTA(A2:A100)
成功率: =SUMPRODUCT(--EXACT(A2:A100,B2:B100))/COUNTA(A2:A100)
バー表示: =REPT("■", ROUND(成功率セル*10, 0)) & REPT("□", 10-ROUND(成功率セル*10, 0)) & " " & TEXT(成功率セル, "0%")
例えば成功率80%なら「■■■■■■■■□□ 80%」と表示されます。作業進捗の報告資料に埋め込むと、グラフを別途作成せずにシート内でダッシュボード的な表示が実現します。
よくあるエラーと原因・対処法
| 症状・エラー | 主な原因 | 対処法 |
|---|---|---|
| EXACT関数が常にFALSEを返す | 比較する一方のセルに余分なスペースや全角スペースが混入している | TRIM関数で前後スペースを除去してからEXACTで比較する:=EXACT(TRIM(A2),TRIM(B2)) |
| EXACT関数で全角・半角の違いを区別したくない | EXACTは全角・半角も区別するため設計上の仕様 | ASC関数で半角に統一してからEXACTで比較する:=EXACT(ASC(A2),ASC(B2)) |
| REPT関数で#VALUE!エラーが表示される | 繰り返し回数にマイナス値や文字列が渡っている | MAX関数で0以下にならないよう保護する:=REPT(“★”, MAX(0, A2)) |
| REPTバーグラフの長さがバラバラになる | 計算結果が小数になっていて表示が不揃いになっている | ROUND関数で整数に丸める:=REPT(“■”, ROUND(A2/10, 0)) |
| EXACT結果とIF組み合わせで表示がおかしい | EXACTが配列を返す場合にIFが正しく処理できていない | 単一セル比較ならIF(EXACT(A2,B2),…)で問題ない。配列処理はSUMPRODUCTと組み合わせる |
| REPTでセル幅を超えた場合 | 繰り返し回数が多すぎてセルからはみ出す | 列幅を広げるか、繰り返し回数の上限をMIN関数で制限する:=REPT(“■”, MIN(A2, 20)) |
MOS Excel試験でのEXACT・REPT出題ポイント
MOS Excel 365(MO-210)では、テキスト関数の操作は「数式や関数を使用した演算の実行」の領域に含まれます。EXACTおよびREPTは共にテキスト関数に分類されます。
- EXACT関数の基本入力:2つのセルを引数として正確に入力できることが求められる。=EXACT(A2, B2)の形式で引数の順序を把握する
- 大文字・小文字を区別した照合:等号演算子(=)との違いを理解し、ケースセンシティブな比較が必要な場面でEXACTを選択できること
- IF+EXACT組み合わせ:照合結果に応じてメッセージを出し分けるIF+EXACTの組み合わせ入力が問われることがある
- REPT関数の基本入力:文字列と繰り返し回数の2引数を正確に入力できること
- 繰り返し回数にセル参照を使う:静的な回数でなくセルの値を繰り返し回数に使うパターンが実践的な出題として登場することがある
試験時間は50分です。分野別の出題数・配点は公表されていませんが、テキスト関数の問題は「数式や関数を使用した演算の実行」の領域から出題されます。
操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| EXACT基本入力 | =EXACT(A2, B2)を正確に入力できる | ★☆☆ |
| 等号との違いを理解 | 大文字・小文字を区別した照合が必要な場面でEXACTを選択できる | ★★☆ |
| IF+EXACT組み合わせ | =IF(EXACT(A2,B2),”一致”,”不一致”)を正確に入力できる | ★★☆ |
| REPT基本入力 | =REPT(“★”,A2)を正確に入力できる | ★☆☆ |
| REPT動的バー | セルの値を繰り返し回数に使って長さが変わるバーを設定できる | ★★☆ |
| REPT+REPT連結 | &演算子で塗り部分と空白部分を連結した進捗バーを作れる | ★★★ |
まとめ:EXACTで厳密照合、REPTで視覚化
本記事のポイントをまとめます。
- EXACTの役割:大文字・小文字・全角・半角・スペースをすべて区別した厳密な文字列比較を行う。等号演算子(=)では検出できないケース差異を発見できる
- IF+EXACTパターン:照合結果に応じたメッセージ出し分けや、SUMPRODUCT+EXACTによるケースセンシティブなカウントが実務でよく使われる
- EXACT+入力規則:データ入力時に大文字・小文字を強制する仕組みをユーザー設定の数式で実装できる
- REPTの役割:同じ文字を指定回数繰り返して返す。繰り返し回数にセル参照を使うと動的なビジュアル表示が実現する
- REPTバーグラフ:「■」「▮」などの記号を数値に比例した本数で表示するセル内グラフを、グラフ機能なしで簡単に作れる
- REPT進捗バー:塗り記号と空白記号を&で連結すると「塗り+空白」の進捗バーになる。評価星(★☆)も同じパターンで実装できる
- MOS試験のポイント:EXACTは等号との違いと引数の順序、REPTは繰り返し回数にセル参照を使うパターンが重要
EXACT関数は「コードや文字列を絶対に取り違えてはいけない」場面で等号の代わりに使う習慣をつけることが重要です。REPT関数はグラフ作成の手間を省いてシート内に視覚情報を埋め込む手段として、ダッシュボード的な報告書作成に積極的に活用してください。
PR
EXACT・REPTを含む実務で使う関数を豊富な図解と操作例で丁寧に解説。Copilot連携による新しい活用法も収録した最新版。文字列関数を体系的に習得したい方に最適な一冊です。
PR
MOS Excel 365(MO-210)の全出題範囲を網羅した公式準拠テキスト。テキスト関数を含む操作をマルチプロジェクト形式で繰り返し練習でき、試験本番形式に対応した模擬試験も付属しています。
MOS Excel試験の対策はこちらもご参考に
MOS Excel 365(MO-210・MO-211)の試験概要・申込方法・学習スケジュールについては、当サイトの関連記事もあわせてご覧ください。
