基于一个GoogleSheet的表格之间的ID匹配数据,该数据具有巨大的数据?

问题描述 投票:0回答:2
function compareColumns() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName("rps_243_payments_datetime_since=2025-01-01&datetime_until=2025-01-01"); var sheet2 = spreadsheet.getSheetByName("deposit-report"); var sheet3 = spreadsheet.getSheetByName("Comparison"); // Output sheet var range1 = sheet1.getRange("A2:A"); // Column A from Sheet1 var range2 = sheet2.getRange("I2:I"); // Column A from Sheet2 var values1 = range1.getValues(); var values2 = range2.getValues(); var outputRange = sheet3.getRange("B2"); // Starting cell for output in Sheet3 for (var i = 0; i < values1.length && values1[i][0] != ''; i++) { for (var j = 0; j < values2.length && values2[i][0] != ''; ; j++) { if (values1[i][0] !== values2[j][0]) { sheet3.getRange("B" + (i + 2)).setValue("Mismatch"); sheet3.getRange(i + 2, 1).setBackground("red"); } else { sheet3.getRange("B" + (i + 2)).setValue("Match"); sheet3.getRange(i + 2, 1).setBackground("green"); } } } }

基于ID
google-sheets google-apps-script google-sheets-formula
2个回答
1
投票
您的代码每次都在编写结果时,您的代码执行。 我修改了您的代码以不在循环中写入结果,而是一口气编写,这使其更快。

function compareColumns() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName("rps_243_payments_datetime_since=2025-01-01&datetime_until=2025-01-01"); var sheet2 = spreadsheet.getSheetByName("deposit-report"); var sheet3 = spreadsheet.getSheetByName("Comparison"); // Output sheet var range1 = sheet1.getRange("A2:A"); // Column A from Sheet1 var range2 = sheet2.getRange("I2:I"); // Column I from Sheet2 var values1 = range1.getValues(); var values2 = range2.getValues(); var depositIdsArray = []; for (var j = 0; j < values2.length; j++) { if (values2[j][0] != '') { depositIdsArray.push(values2[j][0]); } } var output = []; var backgroundColors = []; for (var i = 0; i < values1.length && values1[i][0] != ''; i++) { if (depositIdsArray.indexOf(values1[i][0]) !== -1) { output.push(["Match"]); backgroundColors.push(["#00FF00"]); } else { output.push(["Mismatch"]); backgroundColors.push(["#FF0000"]); } } sheet3.getRange(2, 2, output.length, 1).setValues(output); sheet3.getRange(2, 1, backgroundColors.length, 1).setBackgrounds(backgroundColors); }

注:
我的代码比您的代码更快,但性能仍然取决于您的数据集的大小。

参考:

应用程序脚本

应用程序脚本中的loops

在“付款”选项卡中输入此公式:

N2

0
投票
为彩色结果单元格,使用

条件格式

let()
arrayformula()

ifs()

ifna()

match().

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.