gpt4 book ai didi

javascript - 如果两个工作表上的字符串匹配,则使用值更新工作表

转载 作者:行者123 更新时间:2023-11-27 23:47:04 25 4
gpt4 key购买 nike

工作表 2 包含所有项目及其状态,而工作表 1 仅包含工作表 2 中的部分项目。我希望每次工作表 1 中提到的项目被列为具有状态更新时都能看到,即e 日期,位于表 2 上。

这是我到目前为止所拥有的,但无法调用正确的范围来使用。有没有更简单的方法来做我想做的事情?

  function statusupdate() {
var activesht = SpreadsheetApp.getActiveSpreadsheet();
var statussht = activesht.getSheetByName("Sheet 2"); //get sheet on which status update occurs
var statusrng1 = statussht.getRangeByName('B');
var statusrng2 = statussht.getRangeByName('C');
var mainsht = activesht.getSheetByName("Sheet 1"); //get sheet where you show a specific thing has been updated, if that thing mentioned here.
var mainrng = mainsht.getRangeByName('F');

if (statusrng1 == mainrng) {
var date = statusrng2.getValue();
var daterng = mainrng.getRangeByName('E');

daterng.setValues(date);
}
}

最佳答案

电子表格公式

您可以让一张工作表中的行跟随另一张工作表中的行,而无需使用脚本。例如,假设我们有一个名为 Items 的工作表,其中包含我们携带的每件元素的一行,元素编号位于第一列。

source data

我们可以使用 VLOOKUP() 搜索包含单个项目信息的行,并从中选择特定列。

例如,此公式将在 B2 中使用,并且可以复制到工作表中的其他单元格:

=VLOOKUP($A2,Items!$A$2:$C$7,COLUMN(),false)

screenshot

脚本

您的脚本存在一些问题。

  • .getRangeByName('B') - 此方法获取一个命名范围。鉴于名称,我怀疑您的意思是获取 B 列,而不是命名范围。如果是这种情况,您可以使用它:

    var statusrng1 = statussht.getRange('B:B');

    在 A1Notation 中,范围 B:B 是整个 B 列。

  • 您打算复制,因此除了识别范围之外还需要执行另一个步骤;您需要首先从一个范围中读取值,然后将它们写入不同的范围。为此,您需要使用类似 getValues() 的方法和 setValues().

这是脚本的更新版本,已适应上述示例电子表格。

function statusupdate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();

//get sheet on which status update occurs
var statusSheet = ss.getSheetByName("Items");
var statusRange = statusSheet.getDataRange();
var statusData = statusRange.getValues();

//get sheet where you show a specific thing has been updated, if that thing mentioned here.
var trackingSheet = ss.getSheetByName("Tracking");
var trackingRange = trackingSheet.getDataRange();
var trackingData = trackingRange.getValues();

// Loop over all rows in the Tracking sheet to update from the Items sheet
// Start with row=1, because row 0 contains headers
for (var row=1; row<trackingData.length; row++) {
var item = trackingData[row][0];
if (item == '') continue; // skip rows without item #

// Look for item in Items sheet
var statusRow = null;
for (var sRow=1; sRow<statusData.length; sRow++) {
if (statusData[sRow][0] == item) {
// Found our match, grab that row
statusRow = statusData[sRow];
break;
}
}

// If we found a matching row, copy the status
if (statusRow) {
// Customize this depending on how your sheets are organized
trackingData[row][1] = statusRow[1];
trackingData[row][2] = statusRow[2];
}
}

// All values have been copied to trackingData, now write to sheet
trackingRange.setValues(trackingData);
}

关于javascript - 如果两个工作表上的字符串匹配,则使用值更新工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com