首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用临时二维数组交换值

如何使用临时二维数组交换值
EN

Stack Overflow用户
提问于 2019-07-03 18:01:36
回答 1查看 74关注 0票数 1

我目前正在尝试在两列(G和H)之间交换值

如果在另一个工作表的第一个列表格参照中找到第一个工作表中的第一个列G值,则这些值不会移动。如果在第二个列表引用中找到它们,则它们必须与第一个表列H的值交换相同的索引。

此代码适用于列G,但不适用于列H。它给出了元素,但没有按顺序排列。

代码语言:javascript
运行
复制
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet29'); //au cas ou ca bug
var lr = spreadsheet.getLastRow();
var lc = spreadsheet.getLastColumn();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName('Sheet29');
var sheet2 = ss.getSheetByName('Tabs of applications and firmwares');
var range1 = sheet1.getRange(2, 7, sheet1.getLastRow(), 9);
var range2 = sheet2.getRange(2, 1, sheet2.getLastRow(), 4);
var values1 = range1.getValues();
var values2 = range2.getValues();
var compteurBon = 0;
var compteurMauvais = 0;
var tempArray1 = [];


for (var i = 0; i < values1.length; i++) {
    for (var j = 0; j < values2.length; j++) {
        if (values1[i][0] === values2[j][0]) {
            compteurBon++;

        } else if (values1[i][0] == values2[j][2]) {
            compteurMauvais++;

            var tempArrayValue1 = values1[i][0];
            tempArray1.push(tempArrayValue1);
            values1[i][0] = values1[i][1];
            values1[i][1] = tempArray1; // here it doesn't take the right value

        }
    }
}
range1.setValues(values1);

};

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-03 22:04:27

好吧,我认为你的代码是在一个好的方向上,但它可以被简化。首先,我知道我们有两个工作表(“工作表29”和“应用程序和固件的标签”),您希望将值从H复制到G,以防G等于第二个工作表中的B。正如我在我的评论中所说的,如果你只想得到同一范围内的两列,你应该使用sheetx.getRange(2,col,sheet1.getLastRow(),2);最后的'2‘是你进入范围的列数(分别是G和H,A和B)。如果我们坚持您的方法,我们将需要另一个tempArray变量:

代码语言:javascript
运行
复制
for (var i = 0; i < values1.length - 1; i++) { 
   tempArray1.push(values1[i].toString().split(",")); 
   tempArray2.push(values2[i].toString().split(","));
}

我们在这里做的是将4列放入这两个数组中。它们中的每一个都是2D的,所以tempArray1包含来自G和H的所有行,对于带有A和B的tempArray2也是如此。您可以分别使用x和x访问数据。在此之后,您可以只比较temparray1和temparray2的值,并写入从G (temparrayi)到H (temparrayi,7)的值

代码语言:javascript
运行
复制
    if (tempArray1[i][0] == tempArray2[i][0]) { 

      compteurBon++; 

    } else if (tempArray1[i][0] == tempArray2[i][1]) {  

      sheet1.getRange(i+2 , 7).setValue(tempArray1[i][1]); 
    }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56867563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档