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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

2463閲覧

GAS spreadsheetでのR1C1形式からA1形式への変更

sozo-1212

総合スコア2

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2021/11/26 05:32

前提・実現したいこと

D2からD4に数量*単価の金額を入れる。
イメージ説明

sheet.getRange('D2:D4').setFormulaR1C1('=RC[-2]*RC[-1]');
のR1C1形式記述を下記のA1形式に変更したい。

sheet.getRange('D2:D4').setFormulas([[
'=B2C2',
'=B3
C3',
'=B4*C4'
]]);

発生している問題・エラーメッセージ

.setFormulasの行で下記エラーが出ます。

Exception: The number of rows in the data does not match the number of rows in the range. The data has 1 but the range has 3.

###その他
R1C1形式記述では問題無く動作しますがA1形式への変更で何が問題になるのか不明。
独学で勉強中のため宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

R1C1、A1形式の問題ではなく、たんに二次元配列の記述の誤りによるエラーです。
今の記述だと横方向に3つ式がならんだ形になっているので、書き込み先の範囲 D2:D4 とmatchしないというエラーが出ているんだと思います。

縦並びにセットしたいのであれば

[[
'=B2C2',
'=B3
C3',
'=B4*C4'
]]

ではなく、

[
['=B2C2'],
['=B3
C3'],
['=B4*C4']
]

です。

投稿2021/11/26 06:41

sawa

総合スコア3002

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

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

sozo-1212

2021/11/26 07:39

回答ありがとうございます。 記述変更して実行しましたが同一エラーが出ました。
sawa

2021/11/26 07:43

同一エラーは出ないと思います。変更後の全コード掲載できますか?
sozo-1212

2021/11/27 10:23

sawaさんからのコメント回答に気付かず遅くなりました。 下記がソースです。宜しくお願いします。 function myFunction08_05_03() { const sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange('B5:D5').setFormulas([[ '=SUM(B2:B4)', '=SUM(C2:C4)', '=SUM(D2:D4)' ]]); sheet.getRange('D2:D4').setFormulas([[ ['=B2*C2'], ['=B3*C3'], ['=B4*C4'] ]]); // sheet.getRange('D2:D4').setFormulaR1C1('=RC[-2]*RC[-1]'); }
guest

0

該当部分のカギかっこが一組多く記述ミスでした。

sheet.getRange('D2:D4').setFormulas([
['=B2C2'],
['=B3
C3'],
['=B4*C4']
]);

が正解です。

投稿2021/11/27 10:50

sozo-1212

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問