[775] 集計に関して
困ってる人 [2023/09/07 17:22:55]
2列目 管理番号
34列目 数値1
35列目 数値2(空白列)
管理番号は1点の場合もあれば、重複している場合もあります
管理番号単位で数値1を集計して、集計結果を35列目に反映したいです
※管理番号が重複している場合は、集計結果を全ての行に反映したい
最終イメージは以下のような感じです
管理番号 数値1 数値2
AAA 10 10
BBB 5 20
BBB 15 20
この処理ができるマクロを作りたいです
アドバイスお願いします
Re: [775] 集計に関して
いっち [2023/09/07 20:59:11]
> [774] の Bing AIにお願いしたコードが以下です
が Cassava Editor のマクロに似ているようで、
Cassava Editor のマクロではないような気がしたもので、
[774] の Bing AIにお願いしたコードを参考にして書いてみました。
Cassava Editor の作者のあすかぜさんなら、
違う書き方の提示をされるかもしれないとか、
そういうことは考えず、書いてみました。
こういう書き方もありますと言うことで。
普段私は、あすかぜさんのコードを拝見して勉強しています。
// 見出しの数値2を書き換えない為に、下記の設定が必要です。
// ***************************
// 見出しが無い場合 1 とする。
// 見出しが 1行なら 2 とする。
// 見出しが 2行なら 3 とする。
start_row = 1;
// start_row = 2;
// start_row = 3;
// ***************************
// 2列目 管理番号
id_col = 2;
// 34列目 数値1
num1_col = 34;
// 35列目 数値2(空白列)
num2_col = 35;
// 管理番号は1点の場合もあれば、重複している場合もあります
// 管理番号単位で数値1を集計して、集計結果を35列目に反映したいです
// ※管理番号が重複している場合は、集計結果を全ての行に反映したい
counts = {};
for (y=start_row; y<=Bottom; y++) {
id = [id_col, y];
if (id in counts) {
counts[id] += [num1_col, y];
} else {
counts[id] = [num1_col, y];
}
}
for (y=start_row; y<=Bottom; y++) {
id = [id_col, y];
[num2_col,y] = counts[id];
}
Re: [775] 集計に関して
あすかぜ [2023/09/07 22:03:03]
いっちさん、ありがとうございます!
同じようなマクロを書こうかと思っていたところでした。
Re: [775] 集計に関して
いっち [2023/09/08 08:24:04]
あすかぜさん、レスありがとうございます。
ふと、34列目 数値1 に何も数値が入っていない場合に
対処して無かった事に気が付きました。
なので、
counts[id] += double([num1_col, y]);
と
counts[id] = double([num1_col, y]);
に訂正しました。
// 見出しの数値2を書き換えない為に、下記の設定が必要です。
// ***************************
// 見出しが無い場合 1 とする。
// 見出しが 1行なら 2 とする。
// 見出しが 2行なら 3 とする。
start_row = 1;
// start_row = 2;
// start_row = 3;
// ***************************
// 2列目 管理番号
id_col = 2;
// 34列目 数値1
num1_col = 34;
// 35列目 数値2(空白列)
num2_col = 35;
// 管理番号は1点の場合もあれば、重複している場合もあります
// 管理番号単位で数値1を集計して、集計結果を35列目に反映したいです
// ※管理番号が重複している場合は、集計結果を全ての行に反映したい
counts = {};
for (y=start_row; y<=Bottom; y++) {
id = [id_col, y];
if (id in counts) {
counts[id] += double([num1_col, y]);
} else {
counts[id] = double([num1_col, y]);
}
}
for (y=start_row; y<=Bottom; y++) {
id = [id_col, y];
[num2_col,y] = counts[id];
}
Re: [775] 集計に関して
困ってる人 [2023/09/08 12:37:06]
いっち様
あすかぜ様
この度は当方の困ったの為にご助力頂き、本当にありがとうございます。
試してみたところ、希望通りの動作を確認出来ました。
知識のない自分には魔法のようで心から尊敬します。
このマクロで作業を進めてみたいと思います。
またどうしても困ったら相談させて下さい。
感謝して活用させて頂きます。
本当にありがとうございました。 多謝! m(_ _)m