Excelで理解する「2次元配列」 — 行と列で考えるデータ管理
プログラミングを学習していると
「配列」は避けて通れません。
1次元配列は理解できても、
2次元配列になると急に分からなくなる
という方が非常に多いです。
そこで今回は、誰もが触れたことのある Excel(表計算) を例にして
2次元配列を直感的に理解していきます。
対象:C#初学者
■ 1次元配列の復習(横一列)
まず復習です。
1次元配列は「横一列の箱」です。
scores[0] scores[1] scores[2]
70 80 90
これはC#では
var scores = new int[3];
インデックスは1つでした。
scores[番号]
■ 2次元配列とは?
ここでExcelを思い出してください。
| A | B | C | |
|---|---|---|---|
| 1 | 10 | 20 | 30 |
| 2 | 40 | 50 | 60 |
Excelでは
- 行(縦)
- 列(横)
の2つで位置が決まります。
これがそのまま 2次元配列の考え方 です。
■ Excel → 配列の対応関係
| Excel | 配列 |
|---|---|
| 行番号 | 1つ目のインデックス |
| 列番号 | 2つ目のインデックス |
つまり
配列[行, 列]
になります。
■ C#で作る2次元配列
2行3列の表を作る
var table = new int[2, 3];
意味:
行 = 2
列 = 3
Excelでいうと
| 行\列 | 0 | 1 | 2 |
|---|---|---|---|
| 0 | |||
| 1 |
の空表を用意した状態です。
■ 値の代入
table[0,0] = 10;
table[0,1] = 20;
table[0,2] = 30;
table[1,0] = 40;
table[1,1] = 50;
table[1,2] = 60;
Excelイメージ
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 10 | 20 | 30 |
| 1 | 40 | 50 | 60 |
■ 取り出し
Console.WriteLine(table[1,2]);
出力
60
Excelでいうと
2行目C列
を見る感覚です。
■ ループで表を処理する(重要)
2次元配列は 二重ループ を使います。
これは現場でも試験でも超重要です。
for (var row = 0; row < 2; row++)
{
for (var col = 0; col < 3; col++)
{
Console.Write(table[row, col] + " ");
}
Console.WriteLine();
}
出力
10 20 30
40 50 60
■ なぜ二重ループ?
Excelの操作を思い出してください。
1行目を左から順に
2行目を左から順に
という動きをします。
つまり
行ループ
列ループ
が自然な処理順序なのです。
■ 初学者がつまずくポイント
● インデックスは1始まりではない
Excel
→ 1行1列
配列
→ 0,0
ここが最大の混乱ポイントです。
● 行と列を逆にする
table[col,row]
と書いてしまう人が非常に多いです。
授業でも頻発します。
Excelイメージを常に思い出してください。
[行, 列]
■ 教育現場でよく使う例題
クラス3人×テスト2回
var score = new int[3,2]
{
{70, 80},
{90, 85},
{60, 75}
};
平均点計算
for (var student = 0; student < 3; student++)
{
var sum = 0;
for (var test = 0; test < 2; test++)
{
sum += score[student, test];
}
Console.WriteLine($"平均:{sum/2}");
}
現実世界のデータと結びつくため理解が定着します。
■ まとめ
2次元配列は難しい概念ではありません。
理解の鍵はこれだけです。
覚えることは1つ
Excelの表をそのままプログラムで扱う仕組み
対応関係
Excel → 行・列
配列 → [row, col]
処理の基本形
二重forループ
ここまで理解できれば、
- Unityのタイルマップ
- 画像処理
- AIグリッド
- 数値解析
- 基本情報アルゴリズム問題
すべての基礎になります。




ディスカッション
コメント一覧
まだ、コメントがありません