質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1469閲覧

[GAS] 繰り返し処理and相対参照 もしくはそれに近い機能を実現したい。

Ochonansan

総合スコア57

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/07/04 06:27

当方開発経験が乏しいためお手柔らかにお願いします。

Googleスプレッドシート上でスクリプトを走らせ、日付同士を比較し、その数値を日単位で出力する機能を作成しています。

比較する日付は実行日のyyyy/mm/ddと、別シートの対象セルに記載されているyyyy/mm/dd形式の物となります。

前者は絶対参照、後者はV2 V3と相対参照し、決められた回数分処理を行いたいのですが、
後者の相対参照が下記のスクリプトだとうまく動作してくれません。


function datacalc() {
var lastlowsheet = SpreadsheetApp.getActiveSpreadsheet();
lastlowsheet.setActiveSheet(lastlowsheet.getSheetByName("last"));
var lls = lastlowsheet.getActiveSheet();

//処理する回数を決めるために、最終行の行数を取得
var lastRow = lls.getLastRow()
Logger.log(lastRow);//24

var calcsheet = SpreadsheetApp.getActiveSpreadsheet();
calcsheet.setActiveSheet(calcsheet.getSheetByName("DateResult"));
var cls = calcsheet.getActiveSheet();

//メイン処理 lastRowで取得した分だけ繰り返し。空白セルの場合は空白
for (var i=2; i<=lastRow; i++){
cls.getRange(i, 1).setFormula('if(PocketWiFi!V2="","",DATEDIF(PocketWiFi!V2,DateResult!$A$1,"D"))')
//cls.getRange(i, 1).setFormula('if(LLS.getActiveCell(i, 22)="","",DATEDIF(LLS.getActiveCell(i, 22),DateResult!$A$1,"D"))')
}
}

何か他の指定方法で実現可能か相談したく。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/07/04 09:44

どうなったらうまく動作することになるのですか?そして今どうなっているのでしょうか
Ochonansan

2019/07/05 07:59

すみません、記載漏れていました。 そして他の方法で解決しました。(AutoFillをさせる処理に変えました。) ありがとうございました。
guest

回答1

0

ベストアンサー

問題点を、このコピーではV2のところがV3, V4と増えていかないこと、だと考えてます。

javascript

1function datacalc() { 2 var lastlowsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 //処理する回数を決めるために、最終行の行数を取得 4 var lastRow = lastlowsheet.lastlowsheet.getSheetByName("last").getLastRow(); 5 Logger.log(lastRow);//24 6 var cls = lastlowsheet.lastlowsheet.getSheetByName("DateResult"); 7 //メイン処理 lastRowで取得した分だけ繰り返し。空白セルの場合は空白 8 cls.getRange(2, 1).setFormula('if(PocketWiFi!V2="","",DATEDIF(PocketWiFi!V2,DateResult!$A$1,"D"))'); 9 for (var i=3; i<=lastRow; i++){ 10 cls.getRange(2, 1).copyTo(cls.getRange(i, 1)); 11 } 12}

投稿2019/07/04 12:33

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問