[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[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

スレッド一覧に戻る返信