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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Google スプレッドシート

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

関数

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

Q&A

1回答

769閲覧

セル色カウントのソースコードの指定範囲をオートフィルしたい(又はINDIRECTのようなセル内の文字式を計算できる関数を教えて下さい)

mtaki

総合スコア12

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Google スプレッドシート

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

関数

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

0グッド

0クリップ

投稿2019/07/16 10:09

編集2019/07/16 10:21

セル色カウントのソースコードの指定範囲をオートフィルしたい

初めまして、こちらで質問をさせて頂くにあたって知識不足ですが、お力添えを頂けると助かります。

■A~N列までのセル色を数えて、その個数によってO列以降に結果を表示させたい

セルのカウントについては、
https://teratail.com/questions/126740
を参考に、スクリプトエディタで独自関数(オリジナル関数?)を作成(コピペ)

【問題点】
求める答えは出てきたが、関数の参照範囲が各行にオートフィルできない
※進捗進行表の為、行ごとに結果がほしい__イタリックテキスト__

前任者からの引継ぎで既にセル色で管理されたスプレッドシート1800行以上ある表を(他シートともリンクしている為文言も変更できず…)
なるべくセル色を数えるという形で回答いただけると助かります

【計算結果イメージ】
__A__|__B__|__C__|__D__|~|O(指定色)|P(指定色のカウント)|
黄____|赤___|青____|黄____|~|黄____|2____|
赤____|赤___|緑____|赤____|~|黄____|0____|
緑____|黄___|青____|青____|~|青____|2____|

上記の色は、セル色です
O列の指定色は、基本的に黄色(#ffff00)ですが状況によって行ごとに色を変える為、各行のカウントが必須です
現在進行形で数時間ごとに、セル色が変動した際の進行状況をP列で判断したいです
.
.
.

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

範囲指定の部分がオートフィルできない

該当のソースコード

【スクリプト】
// 指定範囲のセル背景色に合致するセルの合計数を返します
// color: 背景色 rangeSpecification: 範囲指定文字列
function countCellsWithBackgroundColor(color, rangeSpecification) {

var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);

var x = 0;
var i = 0;
var j = 0;
var cell;
for (i = 1; i <= range.getNumRows(); i++) {
for (j = 1; j <= range.getNumColumns(); j++) {

cell = range.getCell(i, j);

if(cell.getBackgroundColor() == color)
x++;
}
}

return x;
}

// 指定セルの背景色を取得します。
function getBackgroundColor(rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
return sheet.getRange(rangeSpecification).getBackgroundColor();
}

試したこと

他セルに、参照範囲を作って文字の式を連結して計算結果(例:4)をダイレクトにできる関数を探し中
※INDIRECT関数ではエラーになる為、連結した文字式の計算結果を表示する関数があったら教えて頂けると助かります。

=countCellsWithBackgroundColor(getBackgroundColor("O1"), "A1:N1")
※"O1"→指定セル色
※"A1:N1"→指定セル色のカウント範囲

【実際の数式】
試行錯誤の結果
■S列(数式にしないように1文字目は半角スペースを入れてます)
S1 =countCellsWithBackgroundColor(getBackgroundColor("O1"),

■T列(各行ごとにほしいので参照範囲をここで可変にしようとしています)
T1=" ""A"&row(A1)&":N"&row(A1)&""")"
【結果】 "A1:N1")

■U列(SとTを連結させてます)
U1=(RIGHT($S$1,LEN(S1)-1)&T1)
【結果】=countCellsWithBackgroundColor(getBackgroundColor("O1"), "A1:N1")

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

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

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

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

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

guest

回答1

0

=countCellsWithBackgroundColor(getBackgroundColor("O"&ROW()), "A" & ROW() & ":N" & ROW())

として オートフィルでいけるのでは。

投稿2019/07/25 08:21

編集2019/07/25 08:31
sawa

総合スコア3002

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問