// y1 行目の内容を y2 行目にコピーする
function copyRow(y1, y2) {
  for (x = 1; x <= Right; x++) {
    [x,y2] = [x,y1];
  }
}

// y 行 x 列の管理番号を -tanpin に変更する
function changeId(x, y) {
  [x,y] = replace([x,y], "-set", "-tanpin");
}

// 管理番号の列番号
idCol = 1;
// 価格の列番号
priceCol = 7;

id = "";
idStart = 0;
price = "";
priceStart = 0;
copied = false;

for (y = 1; y <= Bottom; y++) {
  if ([idCol,y] != id) {
    // 新しい管理番号の場合。情報を初期化する。
    id = [idCol,y];
    idStart = y;
    price = [priceCol,y];
    priceStart = 0;
    copied = false;
  } else if (copied) {
    // すでにコピーが終わっている場合。管理番号だけ変更する。
    changeId(idCol, y);
  } else if ([priceCol,y] != price) {
    if (priceStart == 0) {
      // 初めて価格が変わった場合。set 価格の開始位置を記録する。
      price = [priceCol,y];
      priceStart = y;
    } else {
      // 2 回目に価格が変わった場合。
      // set 価格の開始位置までをコピーして管理番号を変更する。
      count = priceStart - idStart;
      InsertRow(y, y + count - 1);
      for (i = 0; i < count; i++) {
        copyRow(idStart + i, y + i);
        changeId(idCol, y + i);
      }
      copied = true;
      y += count - 1;
    }
  }
}