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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

Q&A

2回答

3415閲覧

GASで数式の一部(参照セル)のみ変更したい

ari_ari

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

0グッド

0クリップ

投稿2020/10/11 16:26

シートのセルにimportpangeの数式が既に入っています。

=IMPORTRANGE(“$A$1”,“$A$2!B1”)

このB1の部分を指定のシートでは
C1に変えたいと思っています。

複製したシート内の数式の一部(参照部分)の
アルファベットの部分を一つつずつずらすようにしたくて…。

B1のところを●にしておいて
replace で C1に変えようとしたらエラーが出てしまいうまくいきませんでした…。

setFormulaだと、数式を全て入れ直すようになるとおもうのですが
変えたいのはB1の部分だけなので
他に何か方法があったら知りたいです。

よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

2年以上前の記事ですが、行き着いて私も困り先ほど解決したのでコード添付します。

GAS

1function myFunction() { 2 var targetSheet = SpreadsheetApp.getActiveSheet(); 3 var finder = targetSheet.createTextFinder("B1") 4 .matchFormulaText(true); 5 var cnt = finder.replaceAllWith("C1"); 6 SpreadsheetApp.getUi().alert(cnt + "件置換しました。"); 7}

解説など詳細は以下参考にしてみてください。
https://yukeblog.org/blog/spreadsheet2/

投稿2022/04/02 05:33

yukemu

総合スコア4

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

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

0

現在のシートのA1セルに参照先のスプレッドシートキー(あるいはURL)が記入済みで、A2セルに参照先のシート名が書いてあるのですよね?
参照先の範囲文字列を自前で生成すれば、GoogleスプレッドシートのIMPORTRANGE関数だけ使って実現できそうですが。

=IMPORTRANGE($A$1, $A$2 & "!B" & row())

で、この数式が書いてあるセルと同じ行番号でB列のセルの値が取得できます。行番号がずれているなら、row()の部分を(row() + 1)とか適宜調整すればいいでしょう。

こいつを縦方向のセルにコピーすると、それぞれのセルでrow()を取得して、目的のセルの値が取得できるはずです。

ここまで書いておいてなんですが、この方法だと、数式の数だけ別のスプレッドシートから値を取得する処理を行なうことになるので、処理が遅くなるんじゃないかな。

代わりに、先頭のセルにひとつだけ、

=IMPORTRANGE($A$1, $A$2 & "!B" & row() & ":B" & (row() + 5))

みたいに参照先の範囲を生成する数式を書けば、合計5個のセルの値を取得して、数式の書いてあるセルから下に自動的に表示してくれます。

投稿2020/10/12 03:55

編集2020/10/12 03:58
Daregada

総合スコア11990

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問