スプレッドシート
GASの繰り返し処理について
例えばB1~C4の範囲で表があり、A1に好きな数字を入力するようにして、A1に入れた数だけD列以降にB1~C4の表をコピペすることって可能ですか?
forで考えていたのですが、今のところ下のようなイメージで、iを列で考えて行は固定で良いと思ってるのですが、条件式のところはどうしたら良いでしょうか?
for(let i=4; ???; i+2)
伝わりにくかったらすみません。GAS初心者です。分かりにくいところを聞いていただけると助かります。
No.2ベストアンサー
- 回答日時:
No1です。
No1の回答は、Rangeで表をまとめてコピペできることを踏まえて、制御変数「i」はコピーの回数(=ループの繰り返し回数)を意味するものとして回答しています。
(多分、これが一般的な考え方だと思います)
>iは初め4にしたく、~~
desitinationの列番号(左端)を制御変数にしたいってことでしょうか?
スクリプトは好きに書けばよいのでそれでもかまいませんけれど、その場合は、終了値は最後の列番号ってことになりますよね?
2列ずつ増加してゆくものとして、1回なら4、2回なら6・・・ってことになるので、終了値(=列番号)は「4+繰り返し数*2 - 2」となるはずと思います。
これを計算すれば、「繰り返し数 * 2 + 2」ということになるのではないでしょうか?
上記は最後の列番号を示しているので、ループの条件は「<=」になります。
なるほどです。
iはループの回数と考えると、、、その先どうすれば良いかちょっと思いつきません難しいです。
「繰り返し数 * 2 + 2」
こちらで出来ました!
No.1
- 回答日時:
こんにちは
GASはまったく存じませんけれど・・・
ドキュメントを見ると、RangeにはCopyメソッドがあるようなので、A1の値の回数だけ表全体のCopyを繰り返せば済むのではないでしょうか?
https://developers.google.com/apps-script/refere …
なので繰り返しは、
repeat = sheet.getRange("A1").getValue();
for ( i = 0; i < repeat; i++ )
みたいな感じになるのでは?
※ 実際には、A1の値が有効な数値であることのチェック等が必要になると思います。
ありがとうございます。
D4からまずアクティブにしてそこにコピペで貼り付けたいので、行は固定で列のiは初め4にしたく、Range(1,i)のような形でそこから数を2ずつ増やして(表の列数が2なので)いきたいのでA1の数そのままだとおかしくなってしまうかと思ってます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Google Spreadsheetのカスタム表示形式について 2 2023/05/20 09:10
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excel関数について質問です。 シート1に入力シートがあります。 =A1 =B1などで離れた数字な 5 2022/12/18 13:42
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- PHP 【スプレッドシート】順位のつけ方 2 2022/08/17 13:27
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) スプレッドシートのGASでチェックボックスのチェック全てを外したい 1 2022/09/13 17:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
範囲指定したセルを1つずつ飛...
-
アクティブセルから、A列最終行...
-
多重ループの抜けだし方
-
VBA Dir関数でファイルをループ...
-
C#で別のフォームのprogress ba...
-
WinAPI「MsgWaitForMultipleObj...
-
エクセルの当番表を作っていま...
-
再帰関数のインライン展開
-
VB.NETで素因数分解のプログラ...
-
DoEventsが必要な理由について
-
データベースをEOFまでループさ...
-
Escキーを押すと、中断する時と...
-
WSH:任意のキーを押してDo Whi...
-
フラグについて
-
VBAで3秒だけ時間を止めたい
-
うるう年判定のアルゴリズム
-
objective-cの多重ループbreak
-
StatementとResultSetのclose()...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
GIFアニメをループさせたくない
-
プログラミングについて。 1つ...
-
エクセルの当番表を作っていま...
-
テキストボックスの名前に変数...
-
ループフリー
-
vb.netからエクセル関数書き込み
-
CSVファイルの特定の行だけを読...
-
VBA for i=1 to lastrow
-
どなたかこのプログラミングを...
-
Do whileでExitせず、ループの...
おすすめ情報
エラーでなぜかお礼が送れなかったのでこちらで
回答ありがとうございます
D1からまずアクティブにしてそこにコピペで貼り付けたいので、iは初め4にしたく、Range(1,i)のような形でそこから数を2ずつ増やして(表の列数が2なので)いきたいのでA1の数そのままだとおかしくなってしまうかと思ってます。