「数値の大小をパッと見で伝えたいけど、グラフを挿入するほどでもない」「セル一つで進捗率を見せたい」——スプレッドシートで一覧表を作っていると、こんな場面によく出会いますよね。
そんなときに活躍するのが REPT(レプト)関数 です。指定した文字を決まった回数だけ繰り返してくれるシンプルな関数ですが、「█」や「★」を並べるだけで、セルの中に簡易棒グラフや星評価を作れます。
この記事では、REPT関数の基本構文からつまずきやすい #VALUE! エラーの直し方、実務で使える5つの活用パターンまで、サンプル式とあわせて解説します。データバーや条件付き書式との使い分けにも触れているので、最後まで読めば「いつREPTを選べばいいか」が判断できるようになりますよ。
REPT関数とは?スプレッドシートで文字列を繰り返す関数
REPT関数は、指定した文字列を決まった回数だけ繰り返して1つの文字列にして返す関数 です。読み方は「レプト」で、英語の Repeat(リピート)が由来になっています。
たとえば「★」を5回繰り返したい場合は =REPT("★", 5) と書くだけで、結果は ★★★★★ になります。記号や絵文字、英数字、漢字、半角スペースなど、文字であれば何でも繰り返しの対象にできます。
何ができる? どんな場面で使う?
REPT関数が活躍するのは、おもに次のような場面です。
- 売上や得点の一覧で「█」を並べて セル内に簡易棒グラフ を作りたいとき
- 商品レビューやスキル評価を ★ で星マーク表示 したいとき
- タスク管理シートで 進捗率を「███░░░」のようにバー表示 したいとき
- 帳票やCSV出力用に 末尾をスペースで埋めて文字幅を揃えたい とき
- レポートのセル内に 「————」のような区切り線 を引きたいとき
「ちょっとした見せ方の工夫」に強い関数なので、覚えておくと一覧表の表現力がグッと上がります。
NOTE: REPT関数はExcelでもまったく同じ書き方で使えます。Excel版の詳しい解説は ExcelのREPT関数の使い方 をご覧ください。
REPT関数の構文と引数
REPT関数の構文はとてもシンプルで、引数は2つだけです。
=REPT(文字列, 繰り返し回数)
カッコの中には、繰り返したい文字列と回数を順番に指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 文字列 | 必須 | 繰り返したい文字列、またはセル参照 |
| 繰り返し回数 | 必須 | 繰り返す回数(0以上の整数) |
繰り返し回数に小数を指定した場合は、小数点以下が切り捨て られます。たとえば =REPT("★", 3.7) は3回繰り返して ★★★ を返します。
TIP: 繰り返した結果の合計文字数が 32,767文字 を超えると #VALUE! エラーになります。通常の使い方で上限に達することはまずありませんが、「セル参照の数値をそのまま回数に使う」ような式では念のため意識しておきましょう。
REPT関数の基本的な使い方
ここからは、実際にREPT関数を入力して動きを確認していきましょう。3つの基本パターンを押さえれば、応用にもすぐ進めます。
セル参照で繰り返す
セルA1に「OK」と入っている状態で、次のように書きます。
=REPT(A1, 3)
結果は OKOKOK です。A1 の中身がそのまま3回連結されて、ひと続きの文字列として返ってきます。マスター表に置いた文字列を、別のセルで繰り返したいときに便利です。
文字列を直接指定する
セル参照を使わず、ダブルクォーテーションで囲って文字列を直接渡すこともできます。
=REPT("★", 5)
結果は ★★★★★ です。記号や絵文字も同じように繰り返せるので、星マーク表示や区切り線の生成によく使われます。
繰り返し回数が0の場合
繰り返し回数に「0」を指定すると、空文字(””)が返ります。
=REPT("★", 0)
結果はセルが空欄に見える状態です。エラーにはなりません。条件に応じて「表示する/何も出さない」を切り替えたいとき に、この性質が活きてきます(後述する IF 関数との組み合わせで使います)。
REPT関数の実務活用パターン
REPT関数の真価は、他の関数や工夫と組み合わせたときに発揮されます。ここでは、実務でそのまま使える5つのパターンを紹介します。
パターン1:セル内に簡易棒グラフを作る
売上データの横にREPT関数で「█」を並べると、セル内に簡易棒グラフが作れます。
=REPT("█", B2/10)
B2 が 80 なら ████████ のように8本のブロックが表示されます。10で割っているのは、生の値だと棒が長くなりすぎるからです。データの最大値に合わせてスケールを調整するのがコツです。
このテクニックを綺麗に見せるポイントは3つあります。
- スケール調整:値が大きい場合は割り算で桁を縮小する(最大値÷10〜÷100が目安)
- 文字選び:「█」(全角ブロック)を使うと棒の間に隙間が出ない
- 色付け:セルのフォント色を変えれば、そのまま色付きの棒グラフになる
会議資料で「ざっくり傾向を見せたい」、ダッシュボードシートで「グラフを挿入したくない(表のレイアウトを崩したくない)」といったときに重宝します。
TIP: 「█」の文字コードは9608です。キーボードから入力しにくい場合は、スプレッドシートのCHAR関数の使い方 を使って =REPT(CHAR(9608), B2/10) と書いても同じ結果になります。
TIP: B2 がマイナスになる可能性がある場合は、スプレッドシートのMAX関数の使い方 で0以上に制限しましょう。=REPT("█", MAX(B2/10, 0)) と書けば #VALUE! エラーを防げます。
実データで作る売上一覧の簡易グラフ
例として、月別売上の一覧表に簡易グラフを並べてみましょう。次のような表を想定します。
| 月 | 売上(万円) | 簡易グラフ |
|---|---|---|
| 1月 | 120 | ████████████ |
| 2月 | 80 | ████████ |
| 3月 | 150 | ███████████████ |
| 4月 | 95 | █████████ |
| 5月 | 200 | ████████████████████ |
C2 セルに =REPT("█", B2/10) と入力し、下方向にコピーすれば一覧の右側に簡易棒グラフが並びます。最大値(5月の200)を基準に、B2/10 で10ブロック単位に圧縮しているのがポイントです。データが「最大1000」のような大きい値なら B2/50 のように除数を上げて、棒が画面からはみ出さないように調整しましょう。
慣れてきたら、棒の色をフォント色で変えて「目標未達は赤、達成は青」のように見せることもできます。条件付き書式で「C列の文字色を売上値に応じて変える」設定にすれば、印刷でもPDFでもそのまま色付きで保存できます。
パターン2:評価を星で表示する
5段階評価を星マークで表示すると、数字よりもひと目で印象が伝わります。
=REPT("★", C2) & REPT("☆", 5-C2)
C2 が 3 なら ★★★☆☆ と表示されます。塗りつぶしの星と白抜きの星を組み合わせるのが、見栄えよくするコツです。& で2つのREPTを連結している点に注目してください。
商品レビューの一覧、社員のスキル評価マトリクス、研修受講者の習熟度シートなど、「5段階で見せたい場面」全般で使えます。
10段階で表示したい場合は、上限の数字を 5 から 10 に変えるだけで対応できます。
=REPT("★", C2) & REPT("☆", 10-C2)
パターン3:区切り線を作る
セクションの区切りとして、ハイフンやイコールを繰り返した線も作れます。
=REPT("-", 30)
結果は —————————— のような長い区切り線です。帳票や印刷用レイアウトで「セル内に水平線を引きたい」「タイトル下に罫線を引かずに線を出したい」というときに使えます。
=REPT("=", 30)
イコールにすれば二重線風になります。Markdown 慣れしている人なら、見出し下の === を思い出してもらえれば近い使い方です。
パターン4:LEN関数と組み合わせて固定長テキストを作る
文字列を一定の長さに揃えたいときは、スプレッドシートのLEN関数の使い方 と組み合わせます。
=A2 & REPT(" ", 20-LEN(A2))
A2 が「Excel」(5文字)なら、末尾にスペースが15個ついて合計20文字になります。CSV出力やテキストファイルへのエクスポートで、列幅をスペースで揃えた固定長フォーマット を作りたいときに便利です。
左側をスペースで埋めて右揃えにしたいときは、順番を入れ替えるだけです。
=REPT(" ", 20-LEN(A2)) & A2
NOTE: LEN関数は文字数をカウントする関数です。REPT関数と組み合わせると「目標文字数 − 現在の文字数」分のスペースを自動で補えます。詳しくは スプレッドシートのLEN関数の使い方 をご覧ください。
パターン5:進捗バーを作る
タスク管理シートで「完了率を一目で見せたい」というときは、完了部分と未完了部分を分けて表示する進捗バーが便利です。
=REPT("█", D2/10) & REPT("░", 10-D2/10)
D2 が 70(%)なら ███████░░░ のように表示されます。10刻みで全体を10ブロックに分割しているので、進捗が10%進むごとにブロックが1つずつ埋まっていく仕組みです。
入力値が0〜100の範囲を外れる可能性があるなら、MAX関数とMIN関数で安全に制限しておきましょう。
=REPT("█", MIN(MAX(D2,0),100)/10) & REPT("░", 10-MIN(MAX(D2,0),100)/10)
プロジェクト管理シート、目標達成率のダッシュボード、学習進捗の自己管理表など、「進捗を一覧で見たい」場面で使えます。
一歩進んだ使い方:IF関数・MIN関数と組み合わせる
基本パターンを押さえたら、条件分岐と組み合わせて「賢いREPT」にしていきましょう。
IF関数で「条件によって表示/非表示」を切り替える
REPT は繰り返し回数が0だと何も表示しない、という性質があります。これを IF と組み合わせると、条件付きの可視化 ができます。
=IF(B2>=100, REPT("★", 3), "")
B2 が100以上のときだけ ★★★ を表示し、それ以外は空欄、という挙動になります。「目標達成した行だけハイライトしたい」「閾値を超えた異常値に印を付けたい」ようなケースで重宝します。
上限と下限をMIN/MAXで安全に固定する
ユーザー入力や外部データを使う場合、想定外の値(マイナスや極端に大きな数)が混じることがあります。次の式は、0〜100の範囲に常に丸めてから バーを描くテンプレートです。
=REPT("█", MIN(MAX(B2,0),100)/10)
MAX(B2, 0)でマイナス値を0に引き上げるMIN(..., 100)で上限を100に抑える- 最後に
/10で10ブロックスケールに変換する
この3点セットを覚えておけば、想定外データで #VALUE! エラーが出る事故を防げます。
ROUND関数と組み合わせて目盛りを揃える
小数点を含む値をそのまま回数に渡すと、小数点以下が切り捨てられるため、見た目が荒くなることがあります。ROUND関数で四捨五入してから渡すと、見え方が安定します。
=REPT("█", ROUND(B2/10, 0))
ROUND の代わりに ROUNDUP(切り上げ)や ROUNDDOWN(切り捨て)を使えば、「常に多めに見せる」「常に少なめに見せる」といった調整もできます。
REPT関数のよくあるエラーと対処法
REPT関数はシンプルな関数ですが、特有のつまずきポイントがいくつかあります。実際に困りやすい症状をまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 繰り返し結果が32,767文字を超えた | 繰り返し回数を減らすか、繰り返す文字列を1文字にする |
| #VALUE! | 繰り返し回数に負の数を指定した | 0以上の数値を指定する。MAX(値, 0) で安全側に丸める |
| #VALUE! | 繰り返し回数が文字列になっている | 数値型の値を渡す。VALUE関数で数値化することも検討する |
| セルが空白 | 繰り返し回数が0 | 正常な動作です。0回繰り返しは空文字を返します |
| #NAME? | 関数名のスペルミス | 「REPT」のスペルを確認。「REPEAT」や「REPET」になっていないかチェック |
| 数値がそのまま繰り返される | 数値を文字列引数に渡した | 正常な動作です。数値も文字列として扱われ、そのまま繰り返されます |
最もよく遭遇するのが、計算結果がマイナスになって #VALUE! エラーが出る ケースです。
たとえば =REPT("█", B2-A2) という式で、B2 が A2 より小さくなった瞬間にエラーになります。差分が正の値であることが保証できない場合は、MAX関数で 0 以上に制限しましょう。
=REPT("█", MAX(B2-A2, 0))
これだけで、想定外データによるエラー表示を防げます。
棒の長さが揃わない・崩れて見える場合
棒グラフ風に並べたのに「文字幅が揃わなくて見栄えが悪い」というケースもあります。原因は主に2つです。
- フォントがプロポーショナルになっている:等幅フォント(例:Roboto Mono、メイリオ)に変更すると揃いやすくなります
- 使っている文字が半角と全角で混ざっている:「|」(半角縦線)と「│」(全角縦線)など、見た目が似ていても幅が違う文字を混在させない
整列を厳密に揃えたい場合は、全角ブロック「█」で統一する のが最も簡単で確実です。
REPT関数と似た関数・機能との使い分け
REPT関数と混同しやすい関数や、似た目的で使える機能を整理しておきましょう。「いつREPTを選ぶか」の判断材料になります。
文字列を扱う関数との違い
| 関数 | 動作 | 使用例 | 主な用途 |
|---|---|---|---|
| REPT | 文字列を指定回数繰り返す | =REPT("★",3) → ★★★ | 簡易グラフ・区切り線 |
| CONCATENATE | 複数の文字列を結合 | =CONCATENATE(A1,B1) | セル同士の結合 |
| JOIN | 区切り文字で配列を結合 | =JOIN(",",A1:A5) | カンマ区切りの生成 |
& 演算子 | 文字列の結合 | =A1&B1 | シンプルな結合 |
| SUBSTITUTE | 文字列の一部を置換 | =SUBSTITUTE(A1,"旧","新") | 文字置換 |
使い分けの判断軸は次のとおりです。
- 同じ文字列を何度も繰り返したい → REPT関数
- 異なる文字列をつなげたい → CONCATENATE 関数 /
&演算子 - 配列を区切り文字付きで結合したい → JOIN 関数
- 文字列の一部を別の文字に置き換えたい → SUBSTITUTE 関数
データバー(条件付き書式)との使い分け
「セルの中で値の大きさを可視化する」目的なら、REPT以外にも 条件付き書式のカラースケール という選択肢があります。両者の特徴を比較するとこうなります。
| 観点 | REPT関数 | 条件付き書式(カラースケール/データバー的表現) |
|---|---|---|
| 見た目 | 文字を並べた階段状のバー | 背景色のグラデーションやベタ塗り |
| 値が空欄のとき | 空文字を返せる(IF と組み合わせ) | 書式が適用されない |
| 印刷との相性 | 文字なので印刷でも崩れない | 背景色が薄いと印刷時に消えがち |
| 数式と組み合わせ | 自由に分岐・スケール調整できる | 範囲指定とルールでの設定が中心 |
| 他のセルで再利用 | 文字列としてコピーできる | 書式設定なので持ち運びにくい |
ざっくり選び方をまとめると、こうなります。
- 印刷を前提とした帳票・配布資料 → REPT
- 画面上のダッシュボードで色のグラデーションを見せたい → 条件付き書式
- 進捗率や評価の段階表示 → REPT
- 数値そのものの「ヒートマップ」表示 → 条件付き書式
REPTのよさは「文字列なので、コピペで他のシートにそのまま持っていける」「印刷しても消えない」点にあります。配布資料やPDF化を想定するなら、REPTを選ぶ価値は大きいですよ。
スプレッドシートの文字列関数
REPT関数は「文字列の生成・加工」グループに分類されます。あわせて覚えておくと、テキスト処理の幅が一気に広がります。
| 関数 | 機能 | 記事リンク |
|---|---|---|
| REPT | 文字列を繰り返す | この記事 |
| LEN | 文字数をカウント | スプレッドシートのLEN関数の使い方 |
| CHAR | 文字コードから文字を返す | スプレッドシートのCHAR関数の使い方 |
| CONCATENATE | 複数の文字列を連結 | スプレッドシートのCONCATENATE関数の使い方 |
| SUBSTITUTE | 文字列を置換 | スプレッドシートのSUBSTITUTE関数の使い方 |
条件分岐や数値処理と組み合わせる関数
REPTを「賢く動かす」には、条件分岐や数値処理の関数とセットで使うのが定番です。
| 関数 | 役割 | 記事リンク |
|---|---|---|
| IF | 条件分岐で表示/非表示を切り替える | スプレッドシートのIF関数の使い方 |
| MAX | 下限を制限する(マイナス値の防御) | スプレッドシートのMAX関数の使い方 |
| MIN | 上限を制限する(過大値の防御) | スプレッドシートのMIN関数の使い方 |
| ROUND | 小数を四捨五入してから回数に渡す | スプレッドシートのROUND関数の使い方 |
| IFERROR | エラーの代わりに空欄や別文字を返す | スプレッドシートのIFERROR関数の使い方 |
REPT関数のよくある質問(FAQ)
REPTで繰り返した文字列を、後から1文字ずつに分解できますか?
はい、SPLIT 関数や MID 関数で分解できます。たとえば =REPT("★", 3) で返した ★★★ を =SPLIT(REPT("★", 3), "") のように渡せば、別々のセルに展開できます。ただし、REPTで生成した文字列は本質的に「1つの文字列」なので、用途が決まっている場合は配列展開系の SEQUENCE や MAP を使った方が見通しがよくなります。
REPT関数の結果に色を付けることはできますか?
セル単位でフォント色を変えるか、条件付き書式で文字色を切り替える方法が現実的です。1セルの中で「█」だけ赤、「░」だけ薄いグレー、のように色分けする場合は、Apps Script で RichTextValue を使うか、█(U+2588)と ▒(U+2592)など見た目の濃度が違う文字を組み合わせて擬似的にコントラストを出します。詳しくは スプレッドシートの条件付き書式の使い方 もあわせて参考にしてください。
グラフを挿入するのと比べてどちらが軽いですか?
REPT関数で作る簡易グラフの方が圧倒的に軽量です。グラフオブジェクトはレンダリングや再描画のコストがありますが、REPTは単なる文字列なので、数百行レベルの一覧表に並べてもファイルサイズや動作にほぼ影響しません。「100行以上の表に1つずつバーを並べたい」「印刷PDFのファイルサイズを軽くしたい」場合はREPTを選ぶと快適です。
iPhoneやスマホのスプレッドシートアプリでも使えますか?
はい、モバイル版のGoogleスプレッドシートアプリでも問題なく動作します。ただし、画面幅が狭いため、長い棒グラフを表示するとセルの幅で切れて見えることがあります。スマホ閲覧を想定するなら、繰り返し回数を10程度に抑える(B2/10 のように除算する)と見やすく収まります。
REPTで作った棒グラフをコピペすると数式ではなく文字だけを貼り付けたいです
コピーした後、貼り付け先で「形式を選択して貼り付け」→「値のみ貼り付け」(ショートカット: Ctrl + Shift + V)を選ぶと、=REPT(...) の数式ではなく、生成された文字列だけを貼り付けられます。レポートやメール本文への貼り付けで重宝するワザです。
同じREPT式が大量にあるとスプレッドシートが重くなりますか?
REPTは単純な文字列関数なので、数千件レベルでも実用上の影響はほぼありません。重さの原因になりやすいのは、ARRAYFORMULA や VLOOKUP を多用したシートと組み合わせた場合です。動作が重いと感じたら、REPTではなく ARRAYFORMULA(REPT(...)) で1つの式にまとめると、計算負荷を抑えられます。
Excel関数版のREPTと挙動は同じですか?
基本的にまったく同じです。引数の順序、小数点以下の切り捨て、結果の32,767文字上限、繰り返し回数0で空文字を返す挙動も共通です。詳しいExcel版の解説は ExcelのREPT関数の使い方 をご覧ください。
まとめ
スプレッドシートのREPT関数について、構文・基本・実務パターン・エラー対処・他機能との使い分けを通して解説しました。要点を表で振り返っておきましょう。
| 項目 | 内容 |
|---|---|
| 機能 | 指定した文字列を決まった回数だけ繰り返す |
| 構文 | =REPT(文字列, 繰り返し回数) |
| 回数が0 | 空文字を返す(エラーにはならない) |
| 回数がマイナス | #VALUE! エラー |
| 文字数上限 | 結果が32,767文字まで |
| 小数の扱い | 小数点以下は切り捨て |
最後に、実務で押さえておきたいポイントを5つにまとめます。
- 「█」や「|」を繰り返せば、グラフを挿入しなくても セル内に簡易棒グラフ が作れる
- 「★」と「☆」を
&で連結すれば、5段階の 星評価 をひと目で見せられる - LEN関数と組み合わせれば 固定長テキスト にも応用できる
- マイナスや想定外データへの備えは
MAX(値, 0)とMIN(値, 100)の組み合わせで安全に - 「印刷でも崩れない可視化が欲しい」ときは、条件付き書式よりREPTの方が向いている
地味な関数ですが、データの可視化やテキスト整形でじわじわ効いてくる存在です。一覧表の見栄えに困ったときは、ぜひREPT関数を思い出してみてください。
関連記事
REPT関数とあわせて使うと便利な、文字列処理・条件分岐・検索系の関数をまとめました。
- スプレッドシートのLEN関数の使い方 — 固定長フォーマットを作るときの相棒
- スプレッドシートのCHAR関数の使い方 — 入力しにくい記号を文字コードで呼び出す
- スプレッドシートのCONCATENATE関数の使い方 — 異なる文字列を連結する
- スプレッドシートのSUBSTITUTE関数の使い方 — 文字列の一部を置換する
- スプレッドシートのIF関数の使い方 — REPTと組み合わせて条件付き可視化を実現
- スプレッドシートのIFERROR関数の使い方 — エラー時のフォールバック表示
- スプレッドシートのMAX関数の使い方 — マイナス値の防御
- スプレッドシートのMIN関数の使い方 — 上限を制限してエラー回避
- スプレッドシートのROUND関数の使い方 — 小数を整数化してバーの目盛りを揃える
- スプレッドシートのLOOKUP関数の使い方|VLOOKUPとの違いも解説 — 検索系の基本関数
- ExcelのREPT関数の使い方 — Excel版の解説(書き方は共通)
