// 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; } } }