Google Apps Script入門
同じ計算を行数分繰り返す

Google Apps Script(GAS)の入門解説です
公開日:2016-09-28 最終更新日:2022-11-04

第7回.同じ計算を行数分繰り返す


1回だけの処理なら、マクロ(スクリプト)を使わなくても手作業で十分です。


同じ処理を繰り返し実行できるところに、マクロ(スクリプト)の最大の良さがあります。


同じ計算を行数分繰り返すとは

前回に続いて、以下の表で、
金額 = 単価 × 数量
を計算します。

Apps Script 画像

前回は、2行目だけを計算しました。
今回は、2行目~11行目までを繰り返し処理します。

さすがに、
getRange(2, 4).を3,4,5・・・
と10行分コピーするなんてことはしていられません。


前回のスクリプト

function mySample3() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var tannka,suuryou
  tannka = sheet.getRange(2, 2).getValue()
  suuryou = sheet.getRange(2, 3).getValue()
  sheet.getRange(2, 4).setValue(tannka * suuryou) 
}

上のスクリプトを2行目~11行目までを繰り返しすように書き換えます。


完成スクリプト

function mySample4() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var tannka,suuryou
  for (var i=2; i<=11; i++) {
    tannka = sheet.getRange(i, 2).getValue()
    suuryou = sheet.getRange(i, 3).getValue()
    sheet.getRange(i, 4).setValue(tannka * suuryou) 
  }
}

スクリプトの解説

for (i=2; i<=11; i++) {
 繰り返す処理
}


これは、変数i2から1ずつ増やしながらi11以下の間、{}内の処理を繰り返します。
※forの詳細は後述

つまり、
iが2,3,4,・・・11と変化し、その間は、{}内の処理を繰り返す
という事です。

最初は、iが2なので、

tannka = sheet.getRange(2, 2).getValue()
suuryou = sheet.getRange(2, 3).getValue()
sheet.getRange(2, 4).setValue(tannka * suuryou)

このようになり前回のスクリプトと同じになります。

次に、iが3となり、

tannka = sheet.getRange(3 2).getValue()
suuryou = sheet.getRange(3, 3).getValue()
sheet.getRange(3, 4).setValue(tannka * suuryou)

このようになります。

順次、iが4,5,6,8,9,10,11と増えていくので、
結果として、
2行目~11行目までの計算が出来るという事です。


forの詳細

for ([initialExpression]; [condition]; [incrementExpression])

日本語にすれば、

for ([初期式]; [条件]; [増分式])

初期式
var 変数 = 初期値
または、
変数 = 初期値

と書きます。
ここに書く変数は、varで変数宣言しないことが結構あります。
変数宣言しないと、グローバル変数になりますが、
このような、forで使うカウンターは、グローバルで使う事が多いからでしょう。
もちろん、変数宣言したほうが良いです。

条件
いつまで繰り返すかの条件式を書きます。
通常は、
i < ○
i <= ○
このように書きます。
条件を満たしている間、繰り返し処理が行われます。

増分式
初期式に書いた変数を、どのように増加させるかです。
変数++
は、インクリメントといって、変数を1増やします
つまり、
変数 = 変数 + 1
これと同じです。
2UPしたい時は、
変数 = 変数 + 2
を使ってください。

減らす場合は、デクリメントといって、
変数--
と書きます。
変数 = 変数 - 1
と同じです。

変数++、++変数
変数--、--変数
それぞれ「後置」「前置」という言い方をしますが、前記のスクリプトならどちらでも結果は同じです。
「後置」「前置」の違いは、変数をインクリメントした後に返す値が、
後置:インクリメント前の値を返す
前置:インクリメント後の値を返す
このような違いがあります。
変数1 = 変数2++
このような書き方をしなければ、どちらでも同じになります。


forを強制的に抜ける方法

forの終了条件を待たずに、forから抜けるには、
break
を使います。
ifと組み合わせて、ある条件の時、breakでforを抜けることが出来ます。
ifについては、少し後で説明します。


ブロック文

{
 ステートメント1
 ・・・
}

このような構造をブロック文と言います。

ブロック文は文のグループ化に使います。
一般に制御フロー文(例えば if、for など)で用いられます。

ブロック文の中は、TABでインデントを1段下げて書くことで、ブロックの範囲をわかり易くしておきます。


同じ計算を行数分繰り返すの最後に

繰り返し処理は、プログラミングの基本中の基本です。

プログラムの多くの部分は、変数を使って繰り返し処理を書くことになります。

ここは、無条件で書けるようになりましょう。




同じテーマ「Google Apps Script入門」の記事

第4回.セルに数字や文字を入れる
第5回.変数って何だ?
第6回.セルの値を使って計算する
第7回.同じ計算を行数分繰り返す
第8回.最終行を取得して繰り返す
第9回.コメントの書き方
第10回.条件で処理を変える(条件分岐,if)
第11回.条件で処理を変える(条件分岐,switch)
第12回.表範囲をまとめて消去する
第13回.セルに書式を設定する
第14回.複数のシートを扱う


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ