连续区域数据相同合并单元格一种方法
矩形区域数据相同,单元格进行合并。方法仅供参考。
function test2(base_row,base_column,end_row,end_column){
console.clear();
let baserow = base_row ;
let basecolumn= base_column;
let startrow = 0;
let startcolumn = 0;
let endrow = end_row;
let endcolumn = end_column;
let temprow = 1;
let tempcolumn=1;
let arr = Array(endrow-baserow+1).fill().map(()=>Array(endcolumn-basecolumn+1).fill(1));
let resetstartvalue = false;
while(basecolumn+startcolumn<=endcolumn && baserow+startrow <=endrow) {
temprow = 0;
tempcolumn=0;
console.log("startrow:" + startrow+ ",startcolumn:"+ startcolumn)
let cellvalue = Cells.Item(baserow+startrow,basecolumn+startcolumn).Value2;
resetstartvalue = false;
for(let j = startrow;j<endrow-baserow+1;j++){
if(ActiveSheet.Cells.Item(j+baserow,basecolumn+startcolumn).Value2 == cellvalue){
//arr[j][startcolumn] = 0;
temprow = j;
}else{ break; } }
for(let i=startcolumn;i<endcolumn-basecolumn+1;i++){
if(ActiveSheet.Cells.Item(baserow+startrow,basecolumn+i).Value2 == cellvalue){
//arr[startrow][i] = 0;
tempcolumn = i;
}else{ break; } }
console.log("temprow:"+ temprow+ ",tempcolumn:" + tempcolumn )
for(let i=startcolumn;i<=tempcolumn;i++){
for(let j=startrow;j<=temprow;j++){
arr[j][i]=0; } }
if(temprow>0 || tempcolumn>0){
console.log("合并区域起始行,列:"+ (baserow+startrow) + ","+(basecolumn+startcolumn) + "合并区域结束行,列:" +(baserow+temprow)+","+(basecolumn+tempcolumn))
Range(Cells.Item(baserow+startrow,basecolumn+startcolumn),Cells.Item(baserow+temprow,basecolumn+tempcolumn)).Merge(); }
resetstartvalue = false;
for(let j=0;j<endcolumn-basecolumn+1;j++){
for(let i=0;i<endrow-baserow+1;i++){
if(arr[i][j]==1){
startrow = i;
startcolumn = j;
resetstartvalue =true; break; } }
if(resetstartvalue){
break; } }
if(!resetstartvalue){
console.log("not found!")
startrow = endrow+1;
startcolumn = endcolumn+1; } }
console.log(JSON.stringify(arr))
}
WPS产品体验官