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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

774閲覧

「Googleスプレッドシート」別シートに組んだ関数を利用する方法

wtst3011

総合スコア7

Google スプレッドシート

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2022/05/01 04:40

編集2022/05/01 06:10

関数マスタの様なシートを作り、他のスプレッドシートでその関数を利用できるようにしたいです。
マスタシートをいじると他のシートの関数も一気に変わるイメージです。

▼完成イメージ(下記にシートAの関数、シートBの詳細記載)
・シートAのA1セルに関数を記載
・シートBに、シートAのA1セルで作成した関数を反映させたい

▼困っている点
・インポートレンジ関数を使用して上記ができないか試したが、
テキスト情報として扱われる?ので関数として動作しない。

▼詳細▼
「シートA」の関数詳細

="▼クリック率について"&CHAR(10)&"・"&T142&":"&TEXT(T144,"#0.00%")&CHAR(10)&"・先月比:先月"&TEXT(S144,"#0.00%")&"に対し今月は"&TEXT(T144,"#0.00%")&"です。"&TEXT(T144-S144,"#0.00%")&IFS(T144-S144>=0.01,"と増加傾向です",T144-S144<=-0.02,"減少傾向です",AND(T144-S144<0.01,T144-S144>-0.02),"だけ変化していますが、同数値と捉えています")&CHAR(10)&"・目標比:"&TEXT($C$144,"#0.00%")&"に対し"&TEXT(T144,"#0.00%")&IFS(T144-$C$144>=0.001,"だったため目標を達成しています(y)",T144-$C$144<=-0.001,"だったため目標未達です(^^;)",AND(T144-$C$144>-0.001,T144-$C$144<0.001),"とほぼ目標値に近い状態です(y)")&CHAR(10)&CHAR(10)

・「シートB」詳細:上記の別シートにある関数を使い、添付画像のシートに反映させたい
イメージ説明

この場合はスプレッドシートの関数で処理できるものでしょうか?
それともGASを組んで、そのGASで関数を書き込む仕組みなど作るしかないでしょうか?

ググっても中々出てこず、もしご存知の方いらっしゃりましたら教えていただけますと幸いです。
ご不明点あれば教えてください。何卒、宜しくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/05/01 06:52 編集

「『シートA』の関数はIFS関数で、テキストが含まれるものです」 それは、具体的にどのような関数でしょうか。 そして「マスタシートをいじると他のシートの関数も一気に変わるイメージで」「『シートA』で組んだ関数を引っ張ってきて使」うとは、具体的にどういうことでしょうか。 それらを明らかにしていただかないと、可能か不可能か正確に答えられないと思います。 (こちらで勝手にこういうことじゃないかな、と推測して回答することも可能ですが、もし間違った前提に立って回答してしまうと、それは双方時間の無駄ですよね?) 可能であればスプレッドシートの画像キャプチャを張っていただくと理解しやすくなると思います。
wtst3011

2022/05/01 06:09

ご返信ありがとうございます。 わかりづらく申し訳ありません。今追記いたしました。 "引数の指定まで汎用化させたい"という事項に該当するかわからないのですが、 修正したものでわかりますでしょうか?共通言語で話せず恐縮なのですが、 ご確認の程、何卒、宜しくお願いいたします。
guest

回答1

0

ベストアンサー

◆結論:不可能です。

・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された値(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。

【具体例】
A1セルに「C」、B1セルに「10」という値が入っている状態で
D5セルに「=INDIRECT(A1&B1)」と入力
→ D5セルの計算結果は、C10セルの内容になる。

一方「 =INDIRECT("=A1+B1")」 という書き方 をした場合、エラーになる。(INDIRECT関数は、「=A1+B1」という数式を解析できない)


・IMPORTRANGEも同様です。


◆GASを利用するやり方について:

GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。

【具体例】
・シートAの「A1」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
イメージ説明

・これをシートBの「A144」セルに転記したいとする。

この場合、下記のようなコードを、シートBのスクリプトに設定して実行します。

js

1function setFormula() { 2 const ss = SpreadsheetApp.openById('シートAのスプレッドシートID').getSheetByName('シートAの数式を記録しているシートのシート名'); 3 const formula = ss.getRange(1,1).getValue(); // シートAのA1セルから数式(の文字列)を取得する。 4 const destss = SpreadsheetApp.openById('シートBのスプレッドシートID').getSheetByName('シートBのシート名'); 5 destss.getRange(144,1).setFormula('=' + formula); // シートBのA144セルに数式を設定する。 6}

 
・この例示コードの場合、固定文字列をコピーしているので、通常の数式のように、コピー先の行に合わせて、数式内のセル番地をずらすことまでは出来ていません。
(やろうと思えばできる可能性はありますが、実装のための要件[=シートBの数式を、シートAのどの位置にコピーし、どう番地をずらさなければならないのかについての情報] が全く示されていないため、現時点では判断できません)

・複数の関数をコピーしたい場合は、その処理を追加するだけです。

・GASの関数は、エディタから実行するだけでなく、ショートカットキーや、メニューからの呼び出し、画像で作ったボタンクリックで呼び出すこともできます。

投稿2022/05/01 07:15

編集2022/05/01 07:42
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

wtst3011

2022/05/01 08:01

ご回答と、サンプルスクリプトの共有までいただき誠にありがとうございます! GASを使う方法で再検討させていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問