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

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[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]

こちらクローズしてください。
別条件にて再相談します。

スレッド一覧に戻る返信