条件付き書式の魔術!Excelのセルで「7セグメント時計」を完全再現

条件付き書式の魔術!Excelのセルで「7セグメント時計」を完全再現 数学・アルゴリズム実験室

はじめに:Excelで「遊び」を本気でやろう

当ブログ「Excelで暇つぶし」へようこそ!

今回は実務の効率化……ではなく、純粋にExcelの奥深さを楽しむための「最高の暇つぶし」をご提案します。

テーマは、「デジタル時計の再現」です。

Excelの説明画像

電光掲示板やデジタル時計でおなじみの、あのカクカクした数字。
7セグメントディスプレイと言います)

Excelの説明画像

あれをExcelのセルと関数、そして「条件付き書式」だけを使って、ワークシート上に浮かび上がらせてみましょう。

「そんなことして何になるの?」と思うかもしれませんが、このギミックを完成させる頃には、あなたの関数リテラシーは確実に一段階レベルアップしています。

さあ、空っぽのシートを用意して、一緒に作っていきましょう!

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!


ステップ1:設計図(セグメント)を作る

まずは、時計を表示するメインエリアを B2:P6 の範囲とします。
そして、数字を形作る7つのパーツ(セグメント)を、aからgまでのアルファベットで定義します。

画面の右のほう(S1:W7あたり)に、以下のような「設計図」を作ってみましょう。

={,,"a",,;,,,,;"f",,"g",,"b";,,,,;"e",,,,"c";,,,,;,,"d",,}

文字だと分かりにくいので、以下のセルにアルファベットを入力し、背景色をグレーなどに塗りつぶしてみてください。

  • a = U1セル
  • b = W3セル
  • c = W5セル
  • d = U7セル
  • e = S5セル
  • f = S3セル
  • g = U3セル
Excelの説明画像

これが、1つの数字を作るための「基本パーツ」になります。

ステップ2:セルの幅と高さを「時計っぽく」調整する

このままだと長方形の集まりで不格好なので、デジタル時計っぽく見えるようにセルのサイズを調整します。

※Web版Excelでは数値を入力しての一括調整ができないため、列番号や行番号の境界線をドラッグして、見た目感覚で調整しましょう。

列幅の調整

  • 細くする列(縦の棒): B, D, F, H, J, L, N, P, T, V列
  • 広くする列(横の棒): C, G, K, O, U列
  • 時計の「コロン」部分: I列は適度な幅に調整し、I3セルとI5セルに「」を入力しておきます。(「・」だと見えにくいため)
Excelの説明画像

行の高さの調整

  • 低くする行(横の棒): 2, 4, 6行目
  • 高くする行(縦の棒): 3, 5行目
Excelの説明画像

どうですか?グッと時計のディスプレイに近づいてきましたね!


ステップ3:数字とパーツの「対応表」を作る

次に、「0」のときはどのパーツを光らせるか、「1」のときはどれか…というルールをExcelに教え込みます。

Q9:R18の範囲に、以下の対応表を作ってください。

0abcdef
1bc
2abdeg
3abcdg
4bcfg
5acdfg
6acdefg
7abc
8abcdefg
9abcdfg

例えば「1」を表示したいときは、右側の縦棒である bc だけが点灯すればいい、という意味です。

Excelの説明画像

「7」の形は好みが分かれますが、一旦はこの形で進めます。

Excelの説明画像

ステップ4:時刻を1桁ずつ「分解」する

関数の詳細な仕様については、Microsoft公式のヘルプも参考にしてください。

いよいよ時刻を扱います。

Y8セルに「TIME」と見出しを付け、Y9セルに任意の時刻(今回は例として 17:28)を入力してください。

Excelの説明画像

デジタル時計には4つの数字(2桁の「時」、2桁の「分」)が表示されます。

この 17:28 という時刻から、1728 という数字をそれぞれ取り出して、Y10:Y13の範囲に表示させましょう。

【なぜ10で割るのか?】
例えば「17」という数字を「1」と「7」に分けるには、数学的に「10で割った商と余り」を求めます。
10で割った商(17÷10=1 余り7)が10の位、余りが1の位になります。
すなわち、商を求める QUOTIENT 関数と、余りを求める MOD 関数を使えば、時刻を1桁ずつ見事に分解できるのです!

Y10(時の10の位):

=IF(HOUR(Y9)<10, "", QUOTIENT(HOUR(Y9), 10))

※10時より前の場合は、先頭の「0」を表示しないようにIF関数で空白(””)にしています。

Y11(時の1の位):

=MOD(HOUR(Y9), 10)

Y12(分の10の位):

=QUOTIENT(MINUTE(Y9), 10)

Y13(分の1の位):

=MOD(MINUTE(Y9), 10)

これで、時刻をバラバラに分解することができました!

Excelの説明画像

ステップ5:表示ロジック(数式)の構築

ここが今回の最大のキモです。

表示エリア(B2:P6)の中で、色を塗る可能性があるセルは、4桁×7セグメント=合計28個あります。

Excelの説明画像

この28個のセルそれぞれに、「あなたは今、光るべきですか?」を判定する数式を入れていきます。

判定ロジックの解説

例えば、「17:28」の2桁目(Y11セル)は「7」です。

対応表を見ると、「7」のときに光るべきパーツは abc ですね。

Excelの説明画像

つまり、この桁の abc に該当するセルはTRUE(光る)、それ以外はFALSE(光らない)となれば良いわけです。

この判定を行うのが、以下の数式です。(例として a の場合)

=ISNUMBER(SEARCH("a", XLOOKUP($Y11, $Q$9:$Q$18, $R$9:$R$18)))

【数式の分解解説】

XLOOKUP($Y11, 対応表...):今の数字「7」を対応表から探し、光るべきパーツの文字列「abc」を取ってきます。

Excelの説明画像

SEARCH("a", "abc"):取ってきた文字列の中に、自分自身(ここでは”a”)が含まれているかを探します。含まれていれば「1(見つかった位置)」が返り、含まれていなければエラーになります。

Excelの説明画像

ISNUMBER(...):SEARCHの結果が数値(見つかった)ならTRUE、エラー(見つからなかった)ならFALSEを返します。

Excelの説明画像

完璧なロジックですね!

28個の数式を一気に準備する

とはいえ、これを28箇所も手打ちするのは間違いの元です。

しかし、Excelの関数を使えば、入力すべき「セル番地」すらも自動で生成できます。

まず、X15:X42の範囲に、各セルの役割(a〜g)を入力します。

{"a";"a";"a";"a";"b";"b";"b";"b";"c";"c";"c";"c";"d";"d";"d";"d";"e";"e";"e";"e";"f";"f";"f";"f";"g";"g";"g";"g"}

(縦にaが4つ、bが4つ…とコピペで埋めてください)

Excelの説明画像

この程度なら、数式を組まず、手入力のほうが速いです。

次に、対応するセル番地(C2、G2など)をY列に表示させます。

以下のセルに、それぞれの数式を入力してください。

  • Y15セル → =ADDRESS(2,SEQUENCE(4,,3,4),4) (aのグループ)
  • Y19セル → =ADDRESS(3,SEQUENCE(4,,4,4),4) (bのグループ)
  • Y23セル → =ADDRESS(5,SEQUENCE(4,,4,4),4) (cのグループ)
  • Y27セル → =ADDRESS(6,SEQUENCE(4,,3,4),4) (dのグループ)
  • Y31セル → =ADDRESS(5,SEQUENCE(4,,2,4),4) (eのグループ)
  • Y35セル → =ADDRESS(3,SEQUENCE(4,,2,4),4) (fのグループ)
  • Y39セル → =ADDRESS(4,SEQUENCE(4,,3,4),4) (gのグループ)

すると、Y15:Y42の範囲にスピルして、以下のような配列が表示されます。

{"C2";"G2";"K2";"O2";"D3";"H3";"L3";"P3";"D5";"H5";"L5";"P5";"C6";"G6";"K6";"O6";"B5";"F5";"J5";"N5";"B3";"F3";"J3";"N3";"C4";"G4";"K4";"O4"}

Excelの説明画像

【数式の解説】

例として、

=ADDRESS(2,SEQUENCE(4,,3,4),4)

が何をしているのか見てみましょう。

SEQUENCE(4,,3,4) は、「3」から始まり「4」ずつ増える「4」つの数字を作ります。

つまり、{3; 7; 11; 15}という列番号の配列ができます。

Excelの説明画像

そして、ADDRESS(行, 列, 4) は、指定した行と列のセル番地を文字で返します。

第3引数の「4」は相対参照($マークなし)にするための指定です。

これにより、2行目の3, 7, 11, 15列目、すなわち {"C2"; "G2"; "K2"; "O2"} が一瞬で生成されるわけです!

Excelの説明画像

続いて、AD15:AD42の範囲に、先ほどの判定数式を入力していきます。
(時刻の桁$Y10$Y13の参照が4つ周期で切り替わっていることに注意してください)

=ISNUMBER(SEARCH(X15,XLOOKUP($Y10,$Q$9:$Q$18,$R$9:$R$18)))
=ISNUMBER(SEARCH(X16,XLOOKUP($Y11,$Q$9:$Q$18,$R$9:$R$18)))
=ISNUMBER(SEARCH(X17,XLOOKUP($Y12,$Q$9:$Q$18,$R$9:$R$18)))
=ISNUMBER(SEARCH(X18,XLOOKUP($Y13,$Q$9:$Q$18,$R$9:$R$18)))

(これを下まで繰り返す)

さらに、隣のAE15:AE42に =FORMULATEXT(AD15:AD42) と入力して、数式自体をテキストとして表示させておきます。

Excelの説明画像

これで、条件付き書式にコピペする準備が整いました!


ステップ6:条件付き書式に魂を吹き込む

さあ、いよいよ大詰めです。

先ほど用意した数式を使って、時計のセルに色を塗っていきます。

28回も設定するなんて一見面倒な修行のようですが、これを乗り越えた先に圧倒的な達成感が待っています!

1.適用対象である一番左の「a」のセル(C2セル)を選択します。

2.ホームタブから「条件付き書式」→「新しいルール」を選択します。

Excelの説明画像

3.「数式がTRUEのセルを書式設定する」を選択します。

4.数式欄に、AE15セルに表示されている =ISNUMBER(SEARCH(X15,...)) をコピペします。

Excelの説明画像

5.「書式」ボタンを押し、「塗りつぶし」タブで好きな色(例えばネオンブルーや赤など)を選んでOKします。

Excelの説明画像

この作業を、Y列に表示させた対応表(C2, G2, K2…)を見ながら、28個のセル全てに対して行います。

すべて設定し終わったら、B2:P6の範囲を見てみましょう。

Y9に入力した時刻が、見事にデジタル表示で浮かび上がっているはずです!

Excelの説明画像

動作テスト

Y9セルの時刻を 9:53 に変えてみてください。

一番左の「0」が消えて、スッキリとした「9:53」が表示されましたか?

Excelの説明画像

無料のWeb版Excelでは常にリアルタイムな時刻を表示し続けることはできませんが、Y9セルに =NOW() と入力しておけば、F9キー(再計算)を押すたびに、その瞬間の時刻にパッと切り替わります!

条件付き書式に関しては以下の記事でも紹介しています。


ステップ7:カスタマイズ(「7」の表示を変えてみる)

このロジックの素晴らしいところは、「対応表を変えるだけで、表示スタイルを自由に変えられる」という点です。

デジタル時計の「7」の表示、一番左上に縦棒(f)がある方が好きだなぁ、と思ったら、Q9:R18の対応表をいじるだけです。

7 abc7 abcf (fを追加)

これで、Y9セルに「17:47」と入力してみてください。

Excelの説明画像


すぐに、縦棒付きのかっこいい「7」が表示されたはずです。この拡張性の高さが、Excel関数の醍醐味ですね。

最後に:この「遊び」がもたらす本当の価値

お疲れ様でした!無事にデジタル時計は完成したでしょうか?

塗りつぶしの色を変えてサイバーパンク風にしたり、セルを増やして「秒」まで表示できるように拡張してみたりと、色々遊んでみてください。

さて、「こんな時計を作って、実務で何の役に立つの?」と思うかもしれません。

確かに、明日の業務でデジタル時計を作ることはないでしょう。

しかし、今回使ったテクニックは、以下のような実務のあらゆる場面で活きてきます。

  1. 論理的思考力の向上: 「やりたいこと(時刻表示)」を「小さなパーツ(セグメント)」に分解し、それを再構築する思考プロセスは、システム設計や業務フロー構築の基礎そのものです。
  2. 関数の組み合わせ技(ネスト): ISNUMBER, SEARCH, XLOOKUP を組み合わせた判定ロジックは、「複数の条件が絡み合う複雑なデータ照合」でそのまま使えます。
  3. UI(ユーザーインターフェース)の意識: セル幅を調整し、見え方を制御する技術は、ユーザーにとって見やすく、入力しやすいダッシュボードやフォーム作りに直結します。

「遊び」の中で身につけた技術こそが、いざという時の応用力になります。

これからも、Excelという最強の暇つぶしツールで、遊び尽くしましょう!

タイトルとURLをコピーしました