点対称に配置!Excelで表を180度回転させる3つの方法

Excel

Excelにずらっと並んだ1から100の数字。

180度回転させて「点対称」に並び替えられたら面白いと思いませんか?

具体的には、左上の「1」が「100」に、右下の「100」が「1」になるような配置です。

この記事では、
関数VBAPower Queryといった様々な機能を使って解説します。

あなたのExcelスキルに合わせて、最適な方法を見つけてみましょう!

今回のミッション:1~100の数字を「点対称」に並び替える!

1から100までの数字が10×10の範囲に並んでいる表を、中心を軸に180度回転させたように配置する!

点対称の見本

「点対称」ってどんな状態?

まず、今回目指す「点対称」のイメージを確認しましょう。

元の状態:
左上から右下へ1から100まで順番に並んだ表です。

元データの画像

目指すゴール:
表の中心を軸にして180度回転させた状態。

左上のセルには「100」が、右下のセルには「1」が入ります。

点対称に配置したデータ

準備:元となる10×10の表を用意しよう

最初に、元となる10×10の表(1~100)をExcelで作成します。

もちろん、手入力でも構いません。

Excel 2021以降のバージョンをお使いならSEQUENCE関数を使うと一瞬です。

SEQUENCE関数での作成方法 (Microsoft 365 / Excel 2021 以降)

任意のセル(例:A1セル)に以下の数式を入力するだけです。

=SEQUENCE(10, 10)

SEQUENCE関数の入力画面

SEQUENCE関数は、指定した行数・列数で連続した数値の配列を生成する便利な関数です。

ROW関数とCOLUMN関数での作成方法 (旧バージョンもOK)

A1からJ10セルまでのすべてのセルに以下の数式を入力します。

=ROW()*10+COLUMN()-10

=ROW()*10+COLUMN()-10 入力画面

=ROW()*10+COLUMN()-10 の意味と使い方

ROW() は、その数式が入力されているセルの「行番号」を返します。

例えば、A3セルに入力すれば 3 を返します。

COLUMN() は、その数式が入力されているセルの「列番号」を返します。
例えば、A列なら 1B列なら 2 です。

この式全体 =ROW()*10+COLUMN()-10 は、
「行番号 × 10 に、列番号を足して、10引いた値」 を計算しています。

【方法1】Excel関数(数式)で実現!

まずはExcelの標準機能である「関数」を使った方法です。
元のデータを変更せずに、別の場所に結果を表示させたい場合に便利です。

INDEX関数で座標を指定する【汎用性重視】

考えかた

新しい表の各セルについて、
点対称の位置にある元のセルの値」をINDEX関数で取得します。

例えば、新しい表の左上には、
元の表の右下の値を持ってくる、という考え方です。

INDEX関数説明分

手順

  1. 元の表が A1:J10 にあるとします。
  2. 結果を表示したい範囲の左上のセル(例: L1セル)を選択します。
  3. 説明画像
  4. 以下の数式を入力し、[Enter]を押します。
    =INDEX($A$1:$J$10, 11-ROW(A1), 11-COLUMN(A1))
  5. 説明画像
  6. 入力した数式を、結果を表示したい10×10の範囲(例: L10:U10)にコピー(フィル)します。
    数式のコピー後の範囲

数式のポイント解説

  • $A$1:$J$10: 元データの範囲(絶対参照
  • ROW(A1), COLUMN(A1): A1セルの行番号・列番号を取得。
    コピーすると自動で変化します(相対参照
  • 11-ROW(A1), 11-COLUMN(A1): 点対称の位置にある元のセルの行番号・列番号を計算。
    (10行10列なので、行番号は 11-1=10, 11-2=9,…, 11-10=1 となり、列番号も同様に逆順になります)

メリット&デメリット

メリット:

  • 元データを変更しない。
  • 数値以外のデータでも位置の入れ替えが可能。(例:文字)
  • 汎用性が高い。

デメリット:

  • 結果表示用の別スペースが必要。

「101 – (元の値)」で計算する【シンプルさ重視】

考えかた

今回の「1から100の連番」という特性を利用した限定的な方法です。

点対称の位置にある数字ペア(1と100, 2と99, …)の合計が常に「101」になることを利用します。

足して101になる画像

手順 (Microsoft 365 / Excel 2021 以降 スピル配列)

結果を表示したいセル(例: L1セル)に、以下の数式を入力するだけ!

=101-A1:J10

=101-A1:J10 入力画面

A1:J10 は元のデータ範囲です。自動的に10×10の範囲に結果が表示されます(スピル

手順 (旧バージョン)

  1. 結果を表示したい範囲の左上のセル(例: L1セル)に =101-A1 と入力。
    A1は元のデータの左上セル)
  2. その数式を10×10の範囲(L1:U10)にコピーします。

メリット・デメリット

メリット:

  • とにかく数式がシンプル!
  • Microsoft 365 / Excel 2021 以降なら一発で結果が表示される(スピル)

デメリット:

  • 元の数値が「1から100の連番」であるなど、特定の条件の時にしか使えない。
  • 結果表示用の別スペースが必要。

【方法2】VBAマクロで自動化!

繰り返し作業や、元のデータを直接書き換えたい場合はVBAマクロが便利です。

注意:マクロ実行後は元に戻せないので、事前にファイルを保存・バックアップしておきましょう。

配列を使って値を入れ替える【汎用的なマクロ】

考えかた

セル操作を繰り返すより、一度VBA内の配列にデータを読み込んで処理し、
最後にセルに書き戻す方が高速で確実です。

点対称の位置関係を計算して配列内で値を入れ替えます。

VBAコード

Sub excel_de_himatsubushi004_01()

' ループ処理で使用するカウンター変数 (i: 行, j: 列)
    Dim i As Long, j As Long
' 10x10の出力データを格納するための2次元配列             
    Dim ary(1 To 10, 1 To 10) As Variant 

    For i = 1 To 10 ' 配列の行indexを1から10まで繰り返す
    
        For j = 1 To 10 ' 配列の列indexを1から10まで繰り返す
            
' 配列aryの(i行目, j列目)の要素に、
' (11-i行目, 11-j列目)のセルの値を代入する。

' これにより、例えばary(1, 1)にはCells(10, 10)の値が、
' ary(10, 10)にはCells(1, 1)の値が格納され、点対称の位置の値が読み込まれる。
            ary(i, j) = Cells(11 - i, 11 - j).Value
            
        Next j ' 次の列へ 
    
    Next i ' 次の行へ 
    
'--- 配列に格納したデータを指定のセル範囲に一括で書き出す ---
' 読み込んだデータを格納した配列aryの内容を、
' アクティブシートの L1:U10 範囲に一度に書き込む。
' (セル一つずつ書き込むより高速)
    Range("L1:U10").Value = ary
    
End Sub




実行方法

  1. はじめに、VBEVisual Basic Editor)を開きます。[Alt]+[F11]
  2. 説明画像
  3. 次に、VBEのメニューバーから「挿入」>「標準モジュール」を選択します。
  4. 続いて、VBAコードをコピー&ペーストします。
  5. 最後に、VBEのメニューバーの下にある実行ボタンをクリックするか、[F5]キーを押します。

メリット・デメリット

メリット:

  • 元の範囲を直接書き換えることも可能。
  • 数値以外のデータでも位置の入れ替えが可能。
  • 配列を使うため、セルを直接操作するより処理が高速な場合が多い。
  • 汎用性が高い。

デメリット:

  • VBAの基本的な知識が必要。
  • 実行すると元に戻せない。

「101 – (元の値)」で計算する【シンプルなマクロ】

考えかた

関数と同じ「101から引く」ロジックをVBAで実行し、
今度は選択範囲の各セルの値を直接書き換えます。

VBAコード

Sub excel_de_himatsubushi004_02()

' Rangeオブジェクト変数を宣言 (ループで各セルを扱うため)
    Dim r As Range

' 指定範囲(A1:J10)内の各セル(r)に対して繰り返し処理を実行
    For Each r In Range("A1:J10")
    
' 現在のセル(r)の値を「101 - 元の値」で計算し、元のセルに上書きする
' ※元の値が1から100の連番の場合に点対称の値になる
        r.Value = 101 - r.Value
        
' 次のセルへ進む
    Next r

End Sub




実行方法

上記と同様にVBEにコードを貼り付け、マクロを実行します。

メリット・デメリット

メリット:

  • コードがシンプル。
  • 元の範囲を直接書き換えられる。

デメリット:

  • 元の数値が「1から100の連番」であるという前提が必要。
  • VBAの基本的な知識が必要。
  • 実行すると元に戻せない。

【方法3】Power Queryでデータ変換!(入れ替えと反転)

強力なデータ整形ツールPower Queryでも、
点対称の並び替えを実現できます。

元のデータを保持したまま、
入れ替え」と「行の反転」を繰り返す汎用的な方法を試してみましょう。

この手順は数値だけでなく、文字データなどにも有効です。

考えかた

この方法では、表の操作を2セット行います。

まず「入れ替え」、
次に「行順序反転」です。

これをもう一度繰り返します。

結果として、表が中心を軸に180度回転した配置になります。(点対称

手順

元データの準備とPower Queryへの読み込み

まず、1から100の数字が並んだ10×10の表を用意します。
表内のセルを選択します。

次に、「データ」タブ>「テーブルまたは範囲から」をクリックします。

すると、「テーブルの作成」画面が出ます。

続いて、範囲を確認してください。
先頭行をテーブルの見出しとして使用する」のチェックは外します。

最後に、「OK」をクリックします。

下の画像のように、Power Queryエディターが起動し、データが表示されます。

入れ替え (転置)

まず、「変換」タブを選択します。

次に、「テーブル」グループの「入れ替え」ボタンをクリックします。

すると、表の入れ替わります。

行の反転

続いて、「行の反転」ボタンをクリックします。

今度は、表の行の順序が上下逆になります。

入れ替え (転置) ※2回目

さらに、「入れ替え」ボタンをクリックします。

また入れ替わります。

行の反転 ※2回目

最後に、「行の反転」ボタンをクリックします。

再び行の順序が上下逆になります。

これでデータが点対称に変換されました。

結果をExcelに読み込む

Power Queryエディターの「ホーム」タブを選択します。

閉じて読み込む」をクリックします。

変換後のテーブルが出力されます。

メリット&デメリット

メリット:

  • 元のデータが数値以外でも位置を入れ替えられる。(汎用性が高い
  • 特定の計算に頼らず、データ内容に依存しない。

デメリット:

  • 4つのステップが必要で、少し手間がかかる。
  • Power Queryの基本操作に慣れが必要です。

まとめ:どの方法があなたにピッタリ?

この記事では、Excelで1から100の数字を点対称に並び替える方法を紹介しました。

関数VBAマクロPower Queryの3つのアプローチを取り上げました。

それぞれ特徴があり、スキルや目的に合わせて最適な手段を選べます。

各方法の特徴

  • 関数: 元データを変更せず、別セルに結果を表示する手軽さが魅力です。
  • VBAマクロ: 自動化や元データの直接書き換えに強力です。 配列利用なら汎用的、計算ならシンプルに実装可能です。
  • Power Query: GUI操作でデータ変換の流れを管理できます。 元データを安全に保持し、データ更新にも強いのが特徴です。

選び方のポイント

  • 手軽さ重視なら: 関数
  • 元のデータを直接書き換えたいなら: VBAマクロ
  • GUI操作で安全にデータ処理したいなら: Power Query

扱うデータの種類も重要です!数値限定か、文字なども含むかで最適な方法は変わります。

一見単純な作業にも、Excelには多様な解決策があります。
ぜひこれらの方法を実際に試してみてください。

あなたのExcel活用の幅が広がるきっかけとなれば幸いです。

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