【初心者向け】Excelマクロでのセル指定方法:RangeとCellsの違いを解説!

この投稿には、プロモーションが含まれている場合があります。
ようこそ♪ささぽんのExcel教室へ。
マクロでセルを指定する方法には、「Range」と「Cells」という2つの書き方があります。
どちらもよく使われる基本的な単語なので、違いや使い分けをこの記事でしっかり理解しておきましょう!

この記事は以下のような方におすすめです!
・Excelマクロをこれから学んでみたいと思っている方
・セルの場所を指定するコードに「A1」と「(1,1)」の2種類があって戸惑ったことがある方
・自分でコードを書くときの基礎を身につけたい方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
![]() | よくわかる Microsoft® Excel® マクロ/VBA Office 2021/2019/2016/Microsoft 365対応 [ 富士通ラーニングメディア ] 価格:2860円 |
![]() | Excel自動化[最強]時短仕事術 マクロ/VBAの基本&業務効率化の即効サンプル【電子書籍】[ 守屋 恵一【著】 ] 価格:1518円 |
目次
3. 【応用】RangeとCellsを組み合わせて範囲を指定する方法を知ろう
■Range(Cells(2,1), Cells(4,3)) で範囲を柔軟に指定する
■Range(“A2:C4”).Cells(2, 2) で範囲内の位置を指定する
1.RangeとCellsの違いを知ろう
マクロではセルの位置を指定するために、主に 「Range」と 「Cells」 という2つの表現を使います。
まずは、それぞれの基本的な使い方と違いを理解しましょう。
■マクロでのセルの指定方法
普段のExcel操作では、「=SUM(A1:A3)」のように、セルの番地をそのまま入力するだけで関数として機能しますよね。Excelの数式では、セルを 「A1」などのセル番地で書くのが基本です。
ところがマクロ(VBA)では、同じようにセルを指定したい場合、次のように「2通りの書き方」があります。
Range("A1").Value = "こんにちは"
Cells(1, 1).Value = "こんにちは"
どちらも結果は同じで、実行するとA1セルに「こんにちは」と表示されます。
このように、マクロでは「セルをどう書き表すか」に2つの方法があるのです。次は、それぞれの特徴を整理していきましょう!
■Rangeの特徴(例:Range(“A2”))
Range は、Excelの関数で馴染みのあるセル番地を文字で指定することができます。例えば「A2セルに文字を入れる」ときは、こう書きます。
Range("A2").Value = "こんにちは"
また、1つのセルではなく範囲を指定したいときにも以下のように書けるので便利です。
Range("A2:B3").Value = "こんにちは"
〈ポイント〉
- 「A2」 や 「B2:C5」 など、Excelで見慣れた表記がそのまま使えるのが魅力
- 複数のセル範囲も1行で指定できて、レイアウトが決まっている処理に向いている
- 番地を指定する際はダブルクォーテーションで囲む必要があるので、書き間違いに注意
■Cellsの特徴(例:Cells(2,1))
Cells は、行番号と列番号を数値で指定する方法です。例えば「A2セルに文字を入れる」ときは、こう書きます。
Cells(2, 1).Value = "こんにちは"
このように、文字でなく 「2行目,1列目」 のように数字で場所を指定するのが Cells の特徴です。
〈ポイント〉
- 行・列を変数で扱えるため、ループ処理や行数の変化に柔軟に対応できる
- セル番地での指定ができるRangeとは違い、行・列ともに数字での指定になるため、視覚的に分かりづらい場面があるため注意
1つ目のポイントについて、詳しくは繰り返し処理の記事でもご説明しますが、コードの例を見てみましょう。
For i = 2 To 4
Cells(i, 1).Value = i & "行目"
Next i
このコードは「i」という文字に、2→3→4と数字を変えて入れていきながら、そのたびに処理を実行するという指示です。
つまり、今回のコードは
- Cells(2, 1) = 「2行目」
- Cells(3, 1) → 「3行目」
- Cells(4, 1) → 「4行目」
というように、行番号を変えながらA列に順番に文字を入れていく処理を書き表したものです。
このように、セルの位置を柔軟に変えながら指定したいときには、Cells の方が書きやすく、マクロの自由度も広がります!
2. Rangeで範囲を指定する方法を知ろう
前の章では、セルを指定する2つの方法として 「Range」と「Cells」 を紹介しました。
ここではその中でも、Rangeを使って「複数のセルをまとめて指定する」方法に焦点を当てて解説していきます。
■基本の書き方:文字列で範囲を指定する
Range を使ってセルの範囲を指定するには、セル番地を書くのが基本です。例えば、A1〜B3までの範囲を指定するには、次のように書きます:
Range("A1:B3").Value = "まとめて入力"
このコードは、A1〜B3の6つのセルすべてに「まとめて入力」と表示させます。
範囲は “A1:B3” のように、コロン(:)で左上のセル〜右下のセルをつなぐことで表現します。これは、Excelの画面でドラッグして範囲を選んで一気に入力するイメージです!
また、行や列の一部だけを指定したい場合も、同じように書けます。行を指定する例:
Range("A1:C1").Value = "1行目"
→ 1行目のA〜C列が指定されます(横方向の範囲)
続いて、列を指定する例:
Range("A1:A5").Value = "A列"
→ A列の1〜5行目が指定されます(縦方向の範囲)
<ポイント>
- 行方向・列方向のどちらの範囲も見たままの感覚で書けるので、初心者にも分かりやすい
- セル範囲は「左上 → 右下」の順で書くと自然
(逆でも動くが読みにくい) - 範囲指定をすると、すべてのセルに同じ値が入る
■Rangeの書き方いろいろ:コロンとカンマの使い方
Range での範囲指定は、「:(コロン)」と「,(カンマ)」を使う2通りの方法があります。
先ほども説明しましたが、まずはコロンを使った例:
Range("A1:B3").Value = "範囲"
→ A1〜B3のすべてのセルを対象にします。Excelの画面でドラッグして範囲を選択する操作と同じイメージです。
続いて、カンマを使った例:
Range("A1", "B3").Value = "範囲"
→ A1とB3の2つを指定して、その間の範囲を扱う形式です。
範囲を一括で指定するのではなく、始まりと終わりの場所だけ指定してその間を範囲として処理します。
結果は “A1:B3” と同じですが、範囲の始点と終点を別々に指定できる点で柔軟性が高い書き方となっています。
どちらの例も、実際にコードを入力して実行すると:

分かりやすいのはコロンを使った形式ですが、
この後紹介する「Cells」を使った応用的な書き方では、カンマで分ける形式が使いやすい場合もあります。
現時点では「どちらでも同じように動く」と覚えておけば大丈夫です!
3. 【応用】RangeとCellsを組み合わせて範囲を指定する方法を知ろう
前の章では、Range(“A1:B3”) のように、文字列で範囲を指定する方法を紹介しました。
この章では、さらに柔軟な指定ができるように、Cells を使って範囲を動的に表現する方法を学んでいきましょう!
■Range(Cells(2,1), Cells(4,3)) で範囲を柔軟に指定する
Rangeの括弧内にCellsを書いて範囲を指定する方法を紹介します。
Range(Cells(2, 1), Cells(4, 3)).Value = "こんにちは"
これは、A2〜C4の範囲を指定し、そのすべてのセルに「こんにちは」と入力するマクロです。
つまり、
Range("A2:C4").Value="こんにちは"
と同じ実行結果になります。
1章で説明したように、Cells(2,1)とCells(4,3)はそれぞれ「A2」と「C4」を表します。
つまり、Range(Cells(2,1),Cells(4,3))はRange(“A2″,”C4”)と置き換えられ、
Range(“A2:C4”)で指定した場合と同じ結果になります。
このように、範囲の「始点」と「終点」をそれぞれCellsで指定してRange() で囲むことで、
数字を使いながら自由に範囲指定をすることができます。
〈ポイント〉
- Rangeの括弧内でCells(行, 列) を使うと、セルの範囲を数字で指定できる
- セル範囲を柔軟に指定する操作の際に便利
■Range(“A2:C4”).Cells(2, 2) で範囲内の位置を指定する
続いて、Rangeでの範囲指定の後にCellsを書くことで、範囲内の位置を指定する方法をご説明します。
Range("A2:C4").Cells(2, 1).Value = "こんにちは"
これは、A2〜C4 の範囲の中の、2行目・1列目のセルに「こんにちは」という文字を入れる操作です。
1章では、Cells(2, 1) は 「シート全体の中で2行目・1列目(=A2セル)」を指していました。
今回は、Cells(2, 1) を Range(“A2:C4”) の後に書いており、
この場合には、シート全体ではなく「範囲内での位置」として解釈されるのです!
つまり、Range(“A2:C4”)という3行×3列の範囲の中での2行目・1列目ということになり、
A3セルに「こんにちは」という文字が入ります。
<ポイント>
- Cells(行, 列) は、「どこを基準に呼び出すか」によって意味が変わる
- 単独の Cells(2, 1) なら「シート全体」が基準 → A2セル
- Range(“A2:C4”).Cells(2, 1) なら「その範囲の中」が基準 → A3セル
- Range(“A1”).Cells(2, 2) のように、範囲に存在しない行・列を指定するとエラーになる
このように、Range と Cells を組み合わせることで、
動きのある範囲や、範囲内の特定セルを自在に扱えるようになります!
4. まとめ:RangeとCellsの使い分けを身につけよう
この記事では、Excelマクロでセルを指定する方法として使われる「Range」と「Cells」の違いについて、
基本から応用まで解説してきました。
■RangeとCellsの基本仕様を整理しよう
Range | Cells | |
指定方法 | セルをセル番地(文字)で指定 | セルの行・列を数字で指定 |
例 | Range(“A2”) | Cells(2, 1) |
メリット | 見た目がわかりやすく、読みやすい | 数値で扱えるため、繰り返し処理や条件分岐に強い |
範囲指定 | “A1:B3” のように文字列で指定 | 組み合わせてRange(Cells(), Cells()) で指定 |
どちらも「セルの位置を指定する」という点では同じですが、向いている使い方に違いがあります。
操作の目的に応じて使い分けられるようになるとマクロの書き方に幅が出てきますので、
ゆっくり身に着けていきましょう!
■RangeとCellsの選び方
例えばRange(“A2”) と Cells(2, 1) は、どちらも A2セルを指定するという意味では同じです。
そのため、最初はどちらを使っても大丈夫!
今回ご紹介した内容は、今後学ぶループ処理や条件分岐にもつながっていく基礎の部分です。
「今回はどちらを使うべきか?」と悩みすぎず、まずはやりやすい方で書いてみて、
「ここではCellsの方が便利そう」「Rangeの方が分かりやすい」といった感覚を少しずつ身につけていきましょう!
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!
