格子模様を作成!100×100マスを塗りつぶす方法

Excel

格子模様とは、縦と横の線が交差した模様です。例えば、チェス盤やチェック柄などがあります。

Excelというと、
仕事で数字やデータを管理するツールというイメージがありますよね。

しかし、 Excelには表計算以外にも、
もっと創造的で面白い使い方があります。

そこで今回は、 その一例として、100×100という広大なマス目を使います。
チェス盤のような格子模様にセルを塗りつぶす方法に挑戦してみましょう。

この作業を通して、皆さんにExcelの新たな楽しみ方を発見していただけたら幸いです。

これができると、Excelの便利な機能を知り、手順を考えて作業を楽にする力がつきます!

今回のミッション

現在の状態とゴール

  • 現在の状態: Excelシート上のセルに、何も入力・書式設定されていない状態。
  • 目指すゴール: 100×100のセル範囲が、交互に色が塗られた格子模様になっている状態。

補足

仮に10×10マス程度であれば、手作業でも簡単に格子模様を作れるかもしれません。

しかし、 これが1000×1000マスだったらどうでしょうか?

手作業で一つずつセルを塗りつぶしていくのは、途方もない時間がかかってしまいます。

そこで、 Excelの機能を賢く使って、効率的に達成する方法を探っていきましょう。
やり方は一つではありません。この記事では、 様々なアプローチを試していきます!

準備

必要なものは、Excelの空白のブックのみです。

Excelのバージョンは問いません。
なお、この記事ではExcel2021を使用して画像等を作成しています。

さぁ、行ってみましょう!


方法1:コピー&ペーストを活用した拡張方法

考えかた

まずは2×2マスに格子模様を手作業で作ります。

次に、 この作成した小さなパターン(2×2の範囲)をコピーします。

そして、 最終的に格子模様にしたい広範囲(今回は100×100マス)を選択し、
そこに先ほどコピーしたパターンを「貼り付け」ます。

すると、選択した範囲全体にそのパターンを繰り返して適用してくれるため、
大きな格子模様が効率的に完成します。

手順

最小パターン(2×2)を作成し、塗りつぶす

はじめに、 格子模様の元となる最小単位のパターンを作成します。

A1からB2セルまでの、2×2マスの範囲(合計4セル)確認します。

次に、 例えば、A1B2セルを選択し、任意の色で「ホーム」タブの「塗りつぶし」ボタンを使って塗りつぶします。

これで、最小の格子パターンができました。

作成したパターン(2×2)をコピー

次に、 作成した範囲を選択します。 そして、 [Ctrl]+[C] キーを押して、この範囲をコピーします。(コピーされると、選択範囲の枠線が点滅します。)

範囲(100×100)を選択

続いて、 このパターンを適用したい範囲、100×100マスを選択します。

マウスでドラッグするのではなく、名前ボックスを使いましょう。

まず、「A1」セルを選択します。

Excelウィンドウの左上にある「名前ボックス」にr100c100と入力し、[Shift]+[Enter]キーを押します。

これで、 A1からCV100セル(100行目の100列目)までの10,000セルが選択されます。

コピーしたパターンを貼り付け

100×100の範囲が選択された状態になっていることを確認します。

最後に、 [Ctrl]+[V] キーを押して、先ほどコピーした2×2のパターンを貼り付けます。

すると、 Excelがコピー元のパターンを100×100の範囲全体に繰り返して適用します。
これで、100×100の格子模様が一気に完成します。

解説

Excelのコピー&ペースト: Excelでは小さなパターンを繰り返して広範囲に貼り付けできます。

今回の操作では、2×2セルの塗りつぶしパターンが、貼り付け先の範囲全体に拡張されて適用されています。
大量のセルを扱う際に非常に役立つテクニックです。

メリット&デメリット

  • メリット:
    • 関数、条件付き書式、VBAなどの知識がなくても、コピー&ペーストという直感的な操作で実行できます。
    • 手順が少なく、操作の意味が分かりやすいです。
    • 最初に作るパターン(2×2)さえ準備できれば、任意の大きさの範囲に簡単に応用できます。
  • デメリット:
    • 最初の最小パターン(2×2)を手作業で作成する手間がわずかにあります。
    • 巨大な範囲に対して行う場合は、完了までに時間がかかる可能性があります。

方法2:関数とジャンプ機能の活用

考えかた

まず、 100×100のセル範囲に、数式を使って「0」と「1」を格子状に配置します。
これは、各セルの「行番号」と「列番号」の合計が偶数奇数かによって決まります。

次に、 その数式の結果を実際の数値(値)に変換し、例えば「0」だけを空白に置き換えます。

最後に、 Excelの「ジャンプ」機能を使って空白のセルだけを選択し、まとめて任意の色で塗りつぶす、という流れです。

手順

100×100のセル範囲を選択

はじめに、 A1セルを選択します。

次に、 Excelウィンドウの左上にある「名前ボックス」に直接「r100c100」と入力します。

入力したら、[Shift]+[Enter]キーを押します。

これで、A1からCV100までのセルが一括で選択されます。

選択したセル範囲に、格子模様を作成するための関数を入力

セル範囲が選択された状態で、数式バーに以下の数式を入力します。

=MOD(ROW()+COLUMN(),2)

この数式の意味は、行番号列番号を足し、その合計を2で割った余り(0か1)を求めています。

なので、偶数と奇数の組み合わせによって、0と1が格子状に配置されます。

数式を入力したら、[Ctrl]+[Enter] を押します。

これで、 選択範囲のすべてのセルに同じ数式が一括で入力され、
計算結果(0か1)が表示されます。

関数の結果を値に変換

セル範囲(A1:CV100)が選択された状態で、[Ctrl]+[C]を押してコピーします。

次に、 [Ctrl]+[Alt]+[V]を押して「形式を選択して貼り付け」ダイアログを開きます。
(または、右クリックメニューから「形式を選択して貼り付け」を選びます) 下の画像。

貼り付け」オプションの中から「」を選択し、「OK」ボタンをクリックします。

これで、セルに入っていた数式が計算結果の「0」か「1」という固定された数値(値)変換されます。

「0」を空白に置換

続いて、「0」を空白にします。

[Ctrl]+[H]を押して「検索と置換」ダイアログを開きます。
(または、「ホーム」タブ > 「検索と選択」 > 「置換」)

検索する文字列」に「0」を入力し、
置換後の文字列」は何も入力せず空欄のままにします。

すべて置換」ボタンをクリックします。

このように、「0」が空白置換されます。

空白セルのみを選択し、好きな色で塗りつぶす

[F5]キーまたは[Ctrl]+[G]を押して、「ジャンプ」ダイアログを開きます。

次に、左下の「セル選択」ボタンをクリックします。

選択オプション」が表示されたら、空白セル」を選択し、「OK」ボタンをクリックします。

これにより、空白セルだけが選択された状態になります。

あとは、「ホーム」タブの「塗りつぶし」ボタンから好きな色を選んでクリックすると、
選択されたセルが一括で塗りつぶされ、格子模様が完成します。

(任意)セル範囲の値をクリア

もし、セルに残っている「1」の数字が不要であれば、再度A1からCV100を選択し、[Delete]キーを押して値をクリアします。塗りつぶしの色はそのまま残ります。

解説

  • MOD関数: MOD(数値, 除数) は、「数値」を「除数」で割った余りを返します。MOD(X, 2)の結果が0ならXは偶数、1なら奇数です。
  • ROW関数: ROW() は、その関数が入力されているセルの行番号を返します。例えば、セルB3なら3を返します。
  • COLUMN関数: COLUMN() は、その関数が入力されているセルの列番号を返します。例えば、セルB3なら2(B列は2番目)を返します。
  • [Ctrl]+[Enter]: 選択されている複数のセルに同じ数式や値を一度に入力するための便利なショートカットです。
  • 値貼り付け: 数式の結果だけをセルに残したい(つまり、数式を消したい)場合に使用します。
  • ジャンプ(空白セル): 特定の条件(今回はセルが空白であること)に合致するセルを広範囲からまとめて選択できる機能です。

メリット&デメリット

  • メリット:
    • Excelの標準機能と基本的な関数だけで実行可能です。
    • 処理の各段階(数式入力値変換置換選択書式設定)が比較的理解しやすいです。
    • VBA(マクロ)の知識がなくても実行できます。
  • デメリット:
    • 手順が他の方法に比べるとやや多いです。
    • 一時的にセルに値を入力し、それを変換・置換するという作業が必要です。
    • 大量のセルを扱う場合、ジャンプ機能の処理に時間がかかる可能性があります。

方法3:条件付き書式

考えかた

Excelの「条件付き書式」機能を使えば、セルの値や位置に基づいて書式(文字色、背景色、罫線など)を自動的に変更できます。

ここでは、数式を利用するルールを作成し、
そのセルの行番号列番号合計偶数である
という条件に合致するセルだけを自動的に塗りつぶすように設定します。

手順

100×100のセル範囲を選択

方法1,2と同様に、A1からCV100のセル範囲を選択します。
(既出のため詳細は省略します)

条件付き書式で、格子模様を作成するための数式を設定

ホーム」タブ > 「条件付き書式」 > 「新しいルール」を選択します。

すると、「新しい書式ルール」ダイアログが表示されます。

ルールの種類から「数式を使用して、書式設定するセルを決定」を選択します。

次に、 下の「次の数式を満たす場合に値を書式設定」というボックスに、以下の数式を入力します。

=MOD(ROW()+COLUMN(),2)=0

これは、「そのセルの行番号列番号合計2で割った余り0(つまり偶数)である場合に(TRUE)となる」という条件を表す数式です。

書式を設定

数式を入力したら、その下にある「書式」ボタンをクリックします。

セルの書式設定」の「塗りつぶし」タブを選択します。

背景色の一覧から、好きな色を選び、「OK」ボタンをクリックします。

新しい書式ルール」ダイアログに戻るので、
内容を確認し、再度「OK」ボタンをクリックします。

これだけで、条件(行番号+列番号偶数)に合致するセルだけが、
設定した色に塗りつぶされ、格子模様が完成します。

解説

  • 数式を使用して、書式設定するセルを決定: 指定した数式がTRUEになるかどうかで書式を適用する機能です。
    数式はアクティブセル(例:A1)を基準に書き、ROW()やCOLUMN()を使えば、範囲内の各セルごとに条件を判定できます。
  • =MOD(ROW()+COLUMN(),2)=0: この論理式がTRUEになるセル(つまり、行番号列番号合計偶数になるセル)に対して、設定した塗りつぶしの書式が適用されます。

メリット&デメリット

  • メリット:
    • 手順が非常に少なく、シンプルで直感的です。
    • 元のセルに一時的な値を入力する必要がありません。
    • 後からセルの値を入力しても格子模様は維持されます。(今回のケースではあまり関係ありませんが)
  • デメリット:
    • 大量のセルに複雑な条件付き書式を設定すると、動作が重くなる可能性があります。
    • どのようなルールが設定されているかを確認するには、「条件付き書式ルールの管理を開く必要があります。

方法4:VBA(マクロ)

考えかた

Excelの機能を自動化できるVBAVisual Basic for Applications)を使用する方法です。

具体的には、 プログラム内で繰り返し処理を行い、
指定した範囲(1行1列目から100行100列目まで)のセルを一つずつ順番に参照します。

そして、 各セルに対して「行番号と列番号の合計が偶数」かどうかを判定します。

最後に、条件に合致すればそのセルの背景色を特定の色で塗りつぶす、という処理を自動で実行させます。

手順

VBE(Visual Basic Editor)を開く

キーボードの[Alt]キーを押しながら[F11]キーを押して、VBEを開きます。

標準モジュールを挿入

VBEのメニューバーから「挿入」>「標準モジュール」を選択します。

画面右側に、コードを入力するための大きな空白のウィンドウ(コードウィンドウ)が表示されます。

VBAコードをコピー&ペーストする

以下のサンプルコードをすべてコピーし、表示されたコードウィンドウに貼り付けます。

Sub himatsubushi002_01()
 
    Dim i As Long, j As Long
       
    For i = 1 To 100
        For j = 1 To 100
            'i + j が偶数だったらi行j列目を黒で塗りつぶす
            If (i + j) Mod 2 = 0 Then Cells(i, j).Interior.Color = vbBlack
 
        Next j
    Next i
       
End Sub

この方法だと、セルを一つずつ塗りつぶすたびに画面が更新されるため、処理に時間がかかります。
以下のコードであれば、画面更新を止めることで処理速度を向上させることができます。

Sub himatsubushi002_02()
 
    Dim i As Long, j As Long
    ' 画面の更新を一時的に止めるためのプロパティ
    Application.ScreenUpdating = False
     
    For i = 1 To 100
        For j = 1 To 100
 
            If (i + j) Mod 2 = 0 Then Cells(i, j).Interior.Color = vbBlack
 
        Next j
    Next i
    ' 画面更新を再開する
    Application.ScreenUpdating = True
     
End Sub

マクロを実行

コードを貼り付けたら、VBEのメニューバーの下にある実行ボタンをクリックするか、[F5]キーを押します。

すると、100×100の範囲に格子模様が作成されます。

解説

  • Application.ScreenUpdating = False: マクロ実行中の画面描画を一時的に止めます。
    セルへの書式設定などをループで繰り返す場合、これをFalseに設定しないと、一つ一つの変更が画面に反映されてしまい、処理が極端に遅くなります。高速化のためには必須の記述です。
  • If (i + j) Mod 2 = 0 Then : 行番号(i)列番号(j)合計2で割った余り0(つまり合計が偶数)かどうかを判定します。

メリット&デメリット

  • メリット:
    • 処理速度が非常に速い。(特に画面の更新を一時的に止める方法)
    • 一度コードを作成すれば、ボタン一つで何度でも同じ処理を実行できる。
    • 複雑な条件や処理も自動化できる。
  • デメリット:
    • VBAの基本的な知識(VBEの開き方、コードの貼り付け方、実行方法など)が必要。
    • コードの記述ミスがあると、エラーが発生したり、意図しない動作をしたりする可能性がある。
    • 他人にファイルを渡す場合、相手がマクロを有効にする必要がある。

まとめ

今回は、大きな範囲を格子状に塗りつぶすための、4つの方法をご紹介しました。

  1. コピー&ペーストを活用した拡張: 作成した基本パターンをコピペで簡単に拡張する方法。
  2. 関数とジャンプ機能: Excelの基本的な機能を論理的に組み合わせる方法。
  3. 条件付き書式: 数式を用いて書式を自動適用する、スマートで効率的な方法。
  4. VBA(マクロ): 最も高速かつ柔軟に処理を自動化する方法。

たった一つの格子模様作りにも、これだけ多くのやり方があります。

Excelは使い方次第で、もっと色々なことができる可能性を秘めています。

この記事で紹介したテクニックが、皆さんのスキルアップに繋がることを願っています。

記事一覧

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