[774] 賢い人 助けてください
困ってる人 [2023/09/07 11:33:21]
★環境
cassava Editor ver.2.4.5
OS : windows 11 pro
◇サンプル情報
A列 管理番号(1つの場合もあれば、複数ある場合も)
B列 個数
C列 配送コード(配送Aと配送B 2つあるとします)
◇やりたい事
管理番号で個数を集計して、集計結果が一定値以下(例:10個以下)
である場合、配送コードを「B」とする
こういうのは素人なので出来る人がいれば助けてほしいです
Re: [774] 賢い人 助けてください
困ってる人 [2023/09/07 13:04:09]
すみません、少し条件を変えます
管理番号 2列目
個数 37列目
配送コード 22列目
配送コード列には元々「1#1」という情報が入っており
個数が「10」以下の場合は、この情報を「2#1」に変更したいです
また管理番号が重複する場合、配送コード欄には同一の情報が
入るようにしたいです
Re: [774] 賢い人 助けてください
困ってる人 [2023/09/07 13:05:26]
Bing AIにお願いしたコードが以下です
同じエラーが続いて、最後には「私は学習中です」と言われて
そこで終わりにされました (;_;)
---------------------------------------------------------------
// ファイルの行数を取得
var rowCount = getRowCount();
// 集計結果がこの値以下の場合に配送コードを2#1にする
var threshold = 10;
// 管理番号と個数のペアを格納する連想配列
var counts = {};
// 全ての行に対してループ
for (var i = 0; i < rowCount; i++) {
// 2列目の管理番号を取得
var id = getCell(i, 1);
// 37列目の個数を取得
var num = getCell(i, 36);
// 管理番号が空でない場合
if (id) {
// 管理番号が連想配列に存在しない場合は0に初期化
if (!counts[id]) {
counts[id] = 0;
}
// 管理番号に対応する個数を加算
counts[id] += num;
}
}
// 再び全ての行に対してループ
for (var i = 0; i < rowCount; i++) {
// 2列目の管理番号を取得
var id = getCell(i, 1);
// 管理番号が空でない場合
if (id) {
// 管理番号に対応する個数が閾値以下の場合
if (counts[id] <= threshold) {
// 22列目の配送コードを2#1に変更
setCell(i, 21, "2#1");
}
// 管理番号が重複する場合は、最初に出現した配送コードを採用する
else {
// 最初に出現した行番号を取得(firstRowIdからfirstRowIndexに変更)
var firstRowIndex = findFirstRow(id, 1);
// 最初に出現した行の配送コードを取得(firstRowIdからfirstRowIndexに変更)
var firstCode = getCell(firstRowIndex, 21);
// 現在の行の配送コードを最初の行と同じにする(firstRowIdからfirstRowIndexに変更)
setCell(i, 21, firstCode);
}
}
}
Re: [774] 賢い人 助けてください
困ってる人 [2023/09/07 17:18:08]
こちらクローズしてください。
別条件にて再相談します。