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回.セルに数字や文字を入れる

・新しいfunctionを追加 ・インデントについて ・書く練習 ・実行して確認 ・コードの解説 ・オブジェクトについて ・メソッドについて ・ステートメントの末尾について ・スクリプトを読めるようになりましょう
第5回.変数って何だ?
・変数とは ・前回書いたスクリプト ・A2セルにも文字を入れたい ・もっと短く書けないのか ・変数を使って書き直すと ・変数の宣言方法と使い方 ・数値や文字を変数に入れる ・変数って何だ?の最後に
第6回.セルの値を使って計算する
・セルの値の取得と設定 ・完成スクリプト、その1 ・解説、その1 ・完成スクリプト、その2 ・解説、その2 ・算術演算子(四則演算子) ・セルの値を使って計算するの最後に
第7回.同じ計算を行数分繰り返す
第8回.最終行を取得して繰り返す
・前回の復習 ・完成スクリプト ・スクリプトの解説 ・指定列の最終行 ・最終行を取得して繰り返すの最後に
第9回.コメントの書き方
・コメントアウトの書き方 ・コメントの必要性 ・コメントの書き方
第10回.条件で処理を変える(条件分岐,if)
・条件分岐(if)の例題 ・完成コード ・if...else文の説明 ・比較演算子 ・論理演算子 ・ビット演算子 ・条件分岐(if)の最後に
第11回.条件で処理を変える(条件分岐,switch)
・条件分岐(switch)の例題 ・完成コード ・switch文の説明 ・条件分岐(switch)の最後に
第12回.表範囲をまとめて消去する
・セルの値の消去 ・データ部分だけを消去する例題 ・完成スクリプト ・スクリプトの解説 ・VBAのCurrentRegionについて ・表範囲をまとめて消去の最後に
第13回.セルに書式を設定する
・書式を設定する例題 ・罫線 ・塗りつぶし ・フォント サイズ ・太字 ・CSSの色設定 ・完成スクリプト ・設定されている書式の取得 ・セルに書式を設定の最後に
第14回.複数のシートを扱う
・複数のシートを扱う例題 ・シート名でシートを取得 ・インデックスでシートを取得 ・シート数を取得 ・る ・複数のシートの最後に


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


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