ホームページに表(テーブル)を作るとき、「このセルを横に2つ分まとめたい」「ここは縦に結合したい」と思ったことはありませんか?
HTMLには、そんなときに使える便利な属性があります。それが**colspan
(コルスパン)とrowspan
(ロウスパン)**です。
この記事では、以下について詳しく解説します:
- colspanとrowspanの基本的な使い方
- 実用的なテーブル結合の例
- 複雑な表を作るためのテクニック
- よくあるエラーと対処法
- スタイリングのコツ
これを読めば、見た目のきれいな表を自分で自由に作れるようになりますよ。
テーブル結合の基本概念

HTMLテーブルの構造
HTMLのテーブルは以下の要素で構成されています:
基本要素
<table>
:テーブル全体を囲む<tr>
:table row(表の行)<td>
:table data(表のデータセル)<th>
:table header(表の見出しセル)
構造例
<table>
<tr>
<th>見出し1</th>
<th>見出し2</th>
</tr>
<tr>
<td>データ1</td>
<td>データ2</td>
</tr>
</table>
セル結合の2つの方向
横方向の結合(colspan)
- 列(カラム)をまたいで結合
- 複数の列を1つのセルにまとめる
- 見出しや大分類に適している
縦方向の結合(rowspan)
- 行(ロー)をまたいで結合
- 複数の行を1つのセルにまとめる
- カテゴリやグループ分けに適している
テーブルのセルを横に結合する(colspan)
colspanとは
colspan
は**「カラム(列)をいくつ分まとめるか」**を指定する属性です。例えば、見出しを複数列分まとめたいときに使います。
基本的な使い方
2列を結合する例
<table border="1">
<tr>
<th colspan="2">商品情報</th>
</tr>
<tr>
<td>商品名</td>
<td>価格</td>
</tr>
</table>
実際の表示
商品情報 |
---|
商品名 |
実用的なcolspanの例
料金表での使用
<table border="1">
<tr>
<th colspan="3">月額料金プラン</th>
</tr>
<tr>
<th>プラン名</th>
<th>価格</th>
<th>機能</th>
</tr>
<tr>
<td>ベーシック</td>
<td>1,000円</td>
<td>基本機能</td>
</tr>
<tr>
<td>プレミアム</td>
<td>2,000円</td>
<td>全機能</td>
</tr>
</table>
スケジュール表での使用
<table border="1">
<tr>
<th>時間</th>
<th colspan="2">午前中</th>
<th colspan="2">午後</th>
</tr>
<tr>
<td>詳細</td>
<td>9:00-10:00</td>
<td>10:00-12:00</td>
<td>13:00-15:00</td>
<td>15:00-17:00</td>
</tr>
</table>
colspanの注意点
セル数の一致
<!-- 正しい例 -->
<tr>
<td colspan="2">A</td> <!-- 2列分 -->
</tr>
<tr>
<td>B</td> <!-- 1列目 -->
<td>C</td> <!-- 2列目 -->
</tr>
<!-- 間違った例 -->
<tr>
<td colspan="2">A</td> <!-- 2列分 -->
</tr>
<tr>
<td>B</td> <!-- 1列目のみ →構造が合わない -->
</tr>
数値の意味
colspan="1"
:通常のセル(省略可能)colspan="2"
:2列分の幅colspan="3"
:3列分の幅
テーブルのセルを縦に結合する(rowspan)

rowspanとは
rowspan
は**「ロー(行)をいくつ分まとめるか」**を指定します。1つの項目が複数行にまたがるような表を作るときに使います。
基本的な使い方
2行を結合する例
<table border="1">
<tr>
<th rowspan="2">カテゴリ</th>
<td>りんご</td>
</tr>
<tr>
<td>みかん</td>
</tr>
</table>
実際の表示
カテゴリ | りんご |
---|---|
みかん |
実用的なrowspanの例
商品カタログでの使用
<table border="1">
<tr>
<th>分類</th>
<th>商品名</th>
<th>価格</th>
</tr>
<tr>
<td rowspan="3">果物</td>
<td>りんご</td>
<td>150円</td>
</tr>
<tr>
<td>みかん</td>
<td>100円</td>
</tr>
<tr>
<td>バナナ</td>
<td>120円</td>
</tr>
<tr>
<td rowspan="2">野菜</td>
<td>キャベツ</td>
<td>200円</td>
</tr>
<tr>
<td>にんじん</td>
<td>80円</td>
</tr>
</table>
組織図での使用
<table border="1">
<tr>
<td rowspan="3">開発部</td>
<td>部長</td>
<td>田中</td>
</tr>
<tr>
<td>主任</td>
<td>佐藤</td>
</tr>
<tr>
<td>担当</td>
<td>鈴木</td>
</tr>
</table>
rowspanの注意点
セルの省略
rowspanを使った場合、結合された範囲の2行目以降では該当するセルを記述しません。
<tr>
<td rowspan="2">A</td> <!-- 2行分のセル -->
<td>B1</td>
</tr>
<tr>
<!-- ここに<td>A</td>は書かない -->
<td>B2</td>
</tr>
colspanとrowspanを組み合わせる
複雑な表の作成
colspan
とrowspan
を同時に使うと、より複雑で情報豊富な表を作成できます。
売上データ表の例
<table border="1">
<tr>
<th rowspan="2">地域</th>
<th colspan="4">四半期売上</th>
<th rowspan="2">合計</th>
</tr>
<tr>
<th>Q1</th>
<th>Q2</th>
<th>Q3</th>
<th>Q4</th>
</tr>
<tr>
<td rowspan="3">関東</td>
<td>100万</td>
<td>120万</td>
<td>110万</td>
<td>130万</td>
<td>460万</td>
</tr>
<tr>
<td>150万</td>
<td>140万</td>
<td>160万</td>
<td>170万</td>
<td>620万</td>
</tr>
<tr>
<td>90万</td>
<td>100万</td>
<td>95万</td>
<td>105万</td>
<td>390万</td>
</tr>
</table>
イベントスケジュール表の例
<table border="1">
<tr>
<th rowspan="2">時間</th>
<th colspan="3">会場</th>
</tr>
<tr>
<th>A会場</th>
<th>B会場</th>
<th>C会場</th>
</tr>
<tr>
<td>10:00-12:00</td>
<td rowspan="2">基調講演<br>(全体)</td>
<td>ワークショップ1</td>
<td>展示見学</td>
</tr>
<tr>
<td>13:00-15:00</td>
<td>ワークショップ2</td>
<td>懇親会準備</td>
</tr>
<tr>
<td>15:00-17:00</td>
<td colspan="3">懇親会(全体)</td>
</tr>
</table>
複雑な結合のコツ
設計の手順
- 紙に下書きする:まず表の構造を紙に描く
- 行と列を数える:実際のセル数を確認
- 結合を計画:どのセルをどの方向に結合するか決める
- 少しずつ作成:一度に全部作らず、段階的に構築
デバッグのポイント
- border=”1″を付ける:開発中は枠線を表示して構造を確認
- 背景色を付ける:セルの範囲を視覚的に確認
- バリデーターを使用:HTMLの構文エラーをチェック
よくあるエラーと対処法

表の構造が崩れる場合
原因1:セル数の不一致
<!-- 問題のあるコード -->
<table border="1">
<tr>
<td colspan="3">見出し</td>
</tr>
<tr>
<td>A</td>
<td>B</td>
<!-- 3列目が不足 -->
</tr>
</table>
<!-- 修正後 -->
<table border="1">
<tr>
<td colspan="3">見出し</td>
</tr>
<tr>
<td>A</td>
<td>B</td>
<td>C</td> <!-- 3列目を追加 -->
</tr>
</table>
原因2:rowspanでのセル重複
<!-- 問題のあるコード -->
<table border="1">
<tr>
<td rowspan="2">A</td>
<td>B1</td>
</tr>
<tr>
<td>A</td> <!-- 不要なセル -->
<td>B2</td>
</tr>
</table>
<!-- 修正後 -->
<table border="1">
<tr>
<td rowspan="2">A</td>
<td>B1</td>
</tr>
<tr>
<!-- <td>A</td>を削除 -->
<td>B2</td>
</tr>
</table>
デバッグ用のCSS
開発中は以下のCSSを使うと構造が見やすくなります:
table {
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #333;
padding: 8px;
text-align: center;
}
/* セルに色を付けて確認 */
td[colspan] {
background-color: #ffeb3b;
}
td[rowspan] {
background-color: #ff9800;
}
CSSを使ったスタイリング
基本的なスタイリング
きれいな表の作り方
table {
border-collapse: collapse;
width: 100%;
margin: 20px 0;
font-family: Arial, sans-serif;
}
th {
background-color: #4CAF50;
color: white;
font-weight: bold;
padding: 12px;
text-align: center;
}
td {
padding: 12px;
text-align: center;
border-bottom: 1px solid #ddd;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
tr:hover {
background-color: #f5f5f5;
}
レスポンシブ対応
/* スマホ対応 */
@media screen and (max-width: 768px) {
table {
font-size: 14px;
}
th, td {
padding: 8px 4px;
}
/* 横スクロール対応 */
.table-container {
overflow-x: auto;
}
}
結合セルの装飾
結合セルを目立たせる
/* colspanを使ったセル */
td[colspan], th[colspan] {
background-color: #e3f2fd;
font-weight: bold;
border: 2px solid #2196f3;
}
/* rowspanを使ったセル */
td[rowspan], th[rowspan] {
background-color: #f3e5f5;
font-weight: bold;
border: 2px solid #9c27b0;
}
実践的な活用例
企業サイトでよく使う表
料金比較表
<table class="pricing-table">
<tr>
<th rowspan="2">プラン</th>
<th colspan="3">機能</th>
<th rowspan="2">価格</th>
</tr>
<tr>
<th>基本機能</th>
<th>高度機能</th>
<th>サポート</th>
</tr>
<tr>
<td>フリー</td>
<td>○</td>
<td>×</td>
<td>×</td>
<td>無料</td>
</tr>
<tr>
<td>ベーシック</td>
<td>○</td>
<td>○</td>
<td>×</td>
<td>月額1,000円</td>
</tr>
<tr>
<td>プレミアム</td>
<td>○</td>
<td>○</td>
<td>○</td>
<td>月額2,000円</td>
</tr>
</table>
営業時間・定休日表
<table class="schedule-table">
<tr>
<th colspan="2">営業時間</th>
</tr>
<tr>
<td rowspan="2">平日</td>
<td>9:00 - 18:00</td>
</tr>
<tr>
<td>(土曜日は17:00まで)</td>
</tr>
<tr>
<td>日曜・祝日</td>
<td>定休日</td>
</tr>
</table>
ECサイトの商品仕様表
<table class="product-spec">
<tr>
<th colspan="2">商品仕様</th>
</tr>
<tr>
<td rowspan="3">サイズ</td>
<td>幅: 30cm</td>
</tr>
<tr>
<td>奥行: 20cm</td>
</tr>
<tr>
<td>高さ: 15cm</td>
</tr>
<tr>
<td>重量</td>
<td>1.2kg</td>
</tr>
<tr>
<td rowspan="2">材質</td>
<td>外側: プラスチック</td>
</tr>
<tr>
<td>内側: ステンレス</td>
</tr>
</table>
アクセシビリティの配慮

スクリーンリーダー対応
headers属性の使用
<table>
<tr>
<th id="category" rowspan="2">カテゴリ</th>
<th id="q1">Q1</th>
<th id="q2">Q2</th>
</tr>
<tr>
<td headers="category q1">100万</td>
<td headers="category q2">120万</td>
</tr>
</table>
scope属性の使用
<table>
<tr>
<th scope="col" colspan="2">売上データ</th>
</tr>
<tr>
<th scope="row">東京</th>
<td>100万円</td>
</tr>
</table>
キーボードナビゲーション
/* フォーカス可能にする */
td[tabindex], th[tabindex] {
outline: 2px solid #4CAF50;
}
/* フォーカス時のスタイル */
td:focus, th:focus {
background-color: #fff3cd;
border: 2px solid #856404;
}
まとめ
今回はHTMLでテーブル(表)のセルを結合する方法を詳しく紹介しました。
重要なポイント
基本的な使い方
colspan
:横にセルをまとめたいとき(列の結合)rowspan
:縦にセルをまとめたいとき(行の結合)- 両方の組み合わせ:複雑な表構造も自由に作成可能
実装のコツ
- 設計を事前に行う:紙に下書きしてから作成
- 段階的に構築:少しずつ作って確認
- デバッグ用CSS:開発中は枠線を表示して構造確認
注意すべき点
- セル数の一致:各行の列数を正しく保つ
- 重複の回避:rowspan使用時はセルを省略
- アクセシビリティ:スクリーンリーダーへの配慮
コメント