Excelにずらっと並んだ1から100の数字。
180度回転させて「点対称」に並び替えられたら面白いと思いませんか?
具体的には、左上の「1」が「100」に、右下の「100」が「1」になるような配置です。
この記事では、
関数、VBA、Power 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関数は、指定した行数・列数で連続した数値の配列を生成する便利な関数です。
ROW関数とCOLUMN関数での作成方法 (旧バージョンもOK)
A1からJ10セルまでのすべてのセルに以下の数式を入力します。
=ROW()*10+COLUMN()-10

=ROW()*10+COLUMN()-10
の意味と使い方
ROW()
は、その数式が入力されているセルの「行番号」を返します。
例えば、A3セルに入力すれば 3
を返します。
COLUMN()
は、その数式が入力されているセルの「列番号」を返します。
例えば、A列なら 1
、B列なら 2
です。
この式全体 =ROW()*10+COLUMN()-10
は、
「行番号 × 10 に、列番号を足して、10引いた値」 を計算しています。
【方法1】Excel関数(数式)で実現!
まずはExcelの標準機能である「関数」を使った方法です。
元のデータを変更せずに、別の場所に結果を表示させたい場合に便利です。
INDEX関数で座標を指定する【汎用性重視】
考えかた
新しい表の各セルについて、
「点対称の位置にある元のセルの値」をINDEX関数で取得します。
例えば、新しい表の左上には、
元の表の右下の値を持ってくる、という考え方です。

手順
- 元の表が
A1:J10
にあるとします。 - 結果を表示したい範囲の左上のセル(例:
- 以下の数式を入力し、[Enter]を押します。
=INDEX($A$1:$J$10, 11-ROW(A1), 11-COLUMN(A1))
- 入力した数式を、結果を表示したい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」になることを利用します。

手順 (Microsoft 365 / Excel 2021 以降 スピル配列)
結果を表示したいセル(例: L1セル)に、以下の数式を入力するだけ!
=101-A1:J10

A1:J10
は元のデータ範囲です。自動的に10×10の範囲に結果が表示されます(スピル)
手順 (旧バージョン)
- 結果を表示したい範囲の左上のセル(例:
L1
セル)に=101-A1
と入力。
(A1
は元のデータの左上セル) - その数式を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
実行方法
- はじめに、VBE(Visual Basic Editor)を開きます。[Alt]+[F11]
- 次に、VBEのメニューバーから「挿入」>「標準モジュール」を選択します。
- 続いて、VBAコードをコピー&ペーストします。
- 最後に、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活用の幅が広がるきっかけとなれば幸いです。