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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Google スプレッドシート

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

Q&A

解決済

1回答

3932閲覧

スプレッドシートで空白のセルをカウントする際にデータのある結合セルを1とカウントしたい

tokumeia

総合スコア2

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Google スプレッドシート

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

0グッド

1クリップ

投稿2020/10/09 07:31

前提・実現したいこと

スプレッドシートで予定表(お客様予約表)を管理する際に空白のセルをカウントして予約率を割り出したいです。

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

結合セルを1とカウントしない為正確なデータが取れません。
例えば、B2からD4まで結合してCOUNTBLANKを使用してB2からD4の空白セルを出す際に0と表示したいのに2と出るなど。
データは横に並んでいて結合するセル数は作業内容により様々です。

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

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

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

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

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

kuma_kuma_

2020/10/09 10:22 編集

質問者様関数を作るのはNGですか?
tokumeia

2020/10/10 01:19

NGではないです。 実際試そうと思いましたが何と記述して良いかわからず質問した次第です。
guest

回答1

0

ベストアンサー

スクリプトエディターでコンテナバインドスクリプトを作って、以下の内容の関数を作成。関数名は好きに変えていい。

スプレッドシートの側では、ブランクの数を表示したいセルに=myCountBlank("B2:D4", B2:D4)みたいに式を書く。第1引数の範囲(文字列で指定)のブランクの数(ただし、結合しているセルで隠れている部分は数えない)を返す。第2引数の範囲(直接指定)は、スクリプト内の処理には必要ないが、範囲内のセルが変更された際に数式を更新するために必要。

GAS

1function myCountBlank(rangeStr, dummy) { 2 const range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(rangeStr); 3 if (range === null) { 4 return 0; 5 } 6 const mergedRanges = range.getMergedRanges(); 7 const values = range.getValues(); 8 if (values.length === 0) { 9 return 0; 10 } 11 let blankCount = 0; 12 for (let i = 0; i < values.length; i++) { 13 blankCount += values[i].filter(x => x === '').length; 14 } 15 for (let i in mergedRanges) { 16 blankCount -= mergedRanges[i].getWidth() * mergedRanges[i].getHeight() - 1; 17 } 18 19 return blankCount; 20}

投稿2020/10/09 13:44

Daregada

総合スコア11990

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

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

tokumeia

2020/10/10 01:40

丁寧にご説明して頂きありがとうございます。 ご回答いただいた内容で試したところうまくいきました。 本当にありがとうございます!
Daregada

2020/10/10 01:44

細かいことを言えば、「結合したセルの表示に使う(先頭の)セルがブランクかどうかをチェックしていない」とか、「結合で隠れた部分に何か書いてあると数え間違える」とか、いくつか問題があります。実際に使う分には(そんなことをしないので)表面化しないと思いますが。
tokumeia

2020/10/11 01:42

そうなのですね。そのことも頭に入れつつ使用していきたいと思います。 +αなことまで丁寧に教えて頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問