首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件更新不同选项卡上的单元格值

如何根据条件更新不同选项卡上的单元格值
EN

Stack Overflow用户
提问于 2020-09-21 05:12:12
回答 1查看 29关注 0票数 0

我有两个选项卡,Sheet 1Sheet 2各有两列

Sheet 1是条形码及其状态的数据库列表(以下拉菜单的形式)。

Sheet 2是扫描的条形码列表及其状态(尚未输入)。

这两张表都有两列,A列表示“条形码”,b列表示“状态”。

每次我用条形码扫描仪扫描我的产品时,第二页就会生成一个扫描的条形码列表。

我想做以下工作:在第2页中创建条形码列表并选择每个条形码的状态后,希望相应地更新Sheet 1的status列,以反映对应条形码的新状态。在删除了表2的数据后,工作表1中的更新状态列必须保持不变。

例如,1的列表中的,有一个从A-1到A-132的条形码数据库,并且所有的状态都是“打开的”。如果在从A-1扫描到A-10之后,我在第2页上创建了条形码列表,并将状态更改为“关闭”,我希望第1页只反映对A-1和A-10的更改。

(不幸的是,我不能让第1页的状态列与第2页的状态列相等,因为第2页的列表必须每天删除。)例如:第1页中的B1不能设置为“= Sheet 2!B1”

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-09-21 06:22:15

代码语言:javascript
复制
function updatestatus() {
  const ss=SpreadsheetApp.getActive();
  const sh1=ss.getSheetByName('Sheet1');
  const sh1sr=2;//sheet1 start row
  let vs1=sh1.getRange(sh1sr,1,sh1.getLastRow()-sh1sr+1,2).getValues();
  const sh2=ss.getSheetByName('Sheet2');
  const sh2sr=2;//sheet2 start row
  const vs2=sh2.getRange(sh2sr,1,sh2.getLastRow()-sh2sr+1,2).getValues();
  const sObj={};//Status object
  vs2.forEach(function(r,i){if(!sObj.hasOwnProperty(r[0])){sObj[r[0]]=r[1];}});
  vs1.forEach(function(r,i){if(sObj.hasOwnProperty(r[0])){r[1]=sObj[r[0]];}});
  sh1.getRange(sh1sr,1,sh1.getLastRow()-sh1sr+1,2).setValues(vs1);//Loads data all at one time
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63986507

复制
相关文章

相似问题

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