Google表格(如果单元格值匹配),则在其他表格中返回相应的值

时间:2020-09-04 16:00:42

标签: google-apps-script google-sheets

我有一个带有“家庭作业”表和“学生”表的Google表格。家庭作业表本质上是一个专栏,我在其中输入数据,并生成单个学生的总成绩。学生表在A列中有该班级的花名册,随后的每一列对应于一项作业(作业1,作业2等)。

在“作业”页面上,我想按一个按钮并运行一个脚本来:

  1. 将“家庭作业”工作表单元格B3中的学生名与“学生”工作表中位于A列中的学生名相匹配。

  2. 复制并粘贴在作业单元格G3中找到的该学生的分数,并粘贴到与当前作业分配相关的列。 “作业”表中的作业分配名称位于单元格B1中,“学生”表中的作业分配名称为列标题。

我是Google表格中的脚本的新手,想象这将是某种索引/匹配。

有什么上手的想法吗?

1 个答案:

答案 0 :(得分:0)

解决方案:

function addScores(){

  const ss = SpreadsheetApp.getActive();
  const h_sheet = ss.getSheetByName('Homework');
  const s_sheet = ss.getSheetByName('Student');
  
  const h_homework = h_sheet.getRange('B1').getValue();
  const h_student = h_sheet.getRange('B3').getValue();
  const h_score = h_sheet.getRange('G3').getValue();
   
  const s_students = s_sheet.getRange(2,1,s_sheet.getLastRow(),1).getValues().flat();
  const s_homeworks = s_sheet.getRange(1,1,1,s_sheet.getLastColumn()).getValues().flat();
  
  const s_student_pos = s_students.indexOf(h_student)+2;
  const s_homework_pos = s_homeworks.indexOf(h_homework)+1;
  
  s_sheet.getRange(s_student_pos,s_homework_pos).setValue(h_score);
}


function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Scores')
  .addItem('Add new score', 'addScores')
  .addToUi();
}

说明:

  1. 点击工具 => 脚本编辑器

script editor

  1. 复制并粘贴此处的上述代码段,然后点击保存

editor

  1. 刷新您的工作表,您会在顶部栏中看到一个新按钮(分数):

menu


插图:

illustration