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

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

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

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

Q&A

解決済

1回答

5306閲覧

”表示形式(数値/書式なしテキスト、など)”  が違うと、queryで別シートから値を取得することはできないのか?

yoichiyy

総合スコア55

Google スプレッドシート

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

0グッド

0クリップ

投稿2021/11/30 07:29

スプレッドシートAのデータを、
スプレッドシートBに 次のようなクエリ関数で取得しています。

QUERY(importrange("●●●●…","シート1!A2:H9000"),"select Col6 where Col2 like '"A45"' and Col3 like '"E77"'")

基本的にはうまく言っているのですが、

A 元データの該当列の表示形式が、 
メニュー>表示形式>数字>数値

B クエリ式が入っている該当列の表示形式が、 
メニュー>表示形式>数字>書式なしテキスト

などのようにずれていると、
「クエリが空で出力しました」
というエラーになってしまいます。

元データは、
一部が数値
一部がテキストで構成されています。

テキストを取得しようと思うと、
数値が「書式なしテキスト」として取得されてしまうため、その後の計算処理ができなくなります。

数値として取得をしようとすると、
今度はクエリが「空です」のエラーになってしまいます。

・・・

解決方法として、
●そもそもクエリを使わずに、GASでコピーをするなどの処理
●数字データだけは、別の列に引っ張るような操作をする
・・・などを考えているのですが、

もしも、よりよい
もっとシンプルな、解決策があればお教えいただきたく 投稿いたしました。

どうぞよろしくお願い致します。

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

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

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

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

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

sawa

2021/11/30 07:54

>数値が「書式なしテキスト」として取得されてしまうため、その後の計算処理ができなく どういう計算処理かわからないですが、ここの数式をいじって回避するのが手っ取り早いのでは
yoichiyy

2021/11/30 07:59

ご説明不足で失礼いたしました。 もう少し申し上げますと、上記のようなクエリで取得した数字が4つあります。 この4つの平均を出すというだけのaverage関数です。 このような状況で、 「ここの数式をいじって回避する」 もしも、具体的な解決策があれば、お教え下さいませ。 sawa様、早速のご回答・アドバイスに、感謝いたします。
sawa

2021/11/30 08:08

>この4つの平均を出すというだけのaverage関数 可能なら具体的な式をください。それを 文字列化した数字に対応する形にしますので。
yoichiyy

2021/11/30 08:25

「文字列化した数字に対応する形」という 方法があるのですね! 関数自体は非常にシンプルで、こちらです。 =average(KG42:KG45) KG42、43、44、45に、 それぞれ、質問投稿で提示した QUERY式が入っております。 ここに、文字列化された数式が入っております。 「文字列化した数字」という概念を得ただけでも、すでに大きな収穫です。 sawa様、どうもありがとうございます。
guest

回答1

0

ベストアンサー

Query関数は一つの列に 文字列と数値が混在している場合、数値の方が多いと文字列を無視するという謎仕様である為、一度対象列を全て文字列化する等で回避する必要があります。

今回のご質問はQuery関数は動いていて文字列としては抽出できているようなので、
その後の計算の方の式を変更することで 文字列化 した数字を数値として扱えるようにします。

書式なしテキストで文字列化した数字は *1 をすれば数値になります。
ただ 数字じゃない文字列に *1 しちゃうとエラーになるので、そこだけ回避すればOKです。

GoogleSheets

1=average(ARRAYFORMULA(IFERROR(KG42:KG45*1,KG42:KG45)))

投稿2021/11/30 08:31

編集2021/11/30 09:19
sawa

総合スコア3002

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

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

yoichiyy

2021/11/30 08:36

arrayformulaの活用といい、感動でございます。 質問をしてみて、本当によかったです。 sawa様、本当にどうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問