当前位置: 首页 > 知识库问答 >
问题:

谷歌工作表的两张工作表之间的交叉引用

冯开诚
2023-03-14

我有一个谷歌电子表格,有两张表格,人

如果人员B栏中的单元格与公司A栏中的单元格中的文本匹配,那么我需要将公司B栏的内容添加到人员C栏中

之前的人物表:

公司表:

人员名单如下:

我一直试图使用Stackoverflow上其他地方找到的匹配脚本,但没有成功:

 function myFunction(){

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var people = sheet.getSheetByName("People");
  var companies = sheet.getSheetByName("Companies");

  var people = people.getRange(column(b));
  var data1 = people.getValues();

  var data2 = companies.getValues();

}

我真的被困住了,知道吗?提前感谢您的任何帮助。

共有2个答案

夔高寒
2023-03-14

虽然Vlookup会为你做这件事,但如果你仍然好奇,这是一种通过脚本完成的方法。

function myFunction(){
  var peopleSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PEOPLE");
  var companySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("COMPANIES");

  // --------- SPECIFY INFO --------------
  var ignoreTitles = true; // If you have titles, this will offset them.

  var peopleColumn = 2; // Which column to use in the People sheet to check comparison
  var companyColumn = 1; // Which column to use in the Company sheet to check comparison

  var companyColumnToGet = 2; // Which column in Company sheet to transfer data from
  var peopleColumnToSet = 3; // Which column in People sheet to transfer data into
  // -------------------------------------

  var start = 1;
  if(ignoreTitles) {
    start++;
  }

  for(var i=start; i<=peopleSheet.getDataRange().getValues().length; i++) {
    for(var j=start; j<=companySheet.getDataRange().getValues().length; j++) {
      if(peopleSheet.getRange(i,peopleColumn).getValue() === companySheet.getRange(j,companyColumn).getValue()) {
        peopleSheet.getRange(i,peopleColumnToSet).setValue(companySheet.getRange(j,companyColumnToGet).getValue());
      }
    }
  }
}
商宏爽
2023-03-14

你不需要脚本。沃卢库普会做的。在“人员”C2中输入:

=iferror(arrayformula(vlookup(B2:B,Company!A2:B,2,false)),"")
 类似资料:
  • 我不熟悉谷歌电子表格功能,并尝试以以下方式应用公式: 我有一张床单 我想链接工作表2中的范围数据 现在需要考虑的是,它只显示了一个项目(最后一个),而这个范围本来应该显示十个项目(a1:a10) 有关更正上述公式的详细信息和帮助,请查看以下链接: https://docs.google.com/spreadsheets/d/1HX1eatP57A5k9Xku7awIVnBPQ2A4ICVrYXTs

  • 此函数工作正常。当当前工作表不是Google表单响应工作表时。我正在使用(每分钟)触发器 图像:沙子数据(主数据)表至(共享数据1)表 我正在寻找一个,当用户提交的谷歌表格的状态是(支付),数据应该在第二页,这是(shareData1) 这里的问题是,当我使用谷歌表单响应表时,这个函数将不再工作。它显示了一个错误。错误图像 在降级的错误图像中,我手动运行此函数,相同的错误显示在AppScript面

  • 我有一个电子表格,有十二张,一年中每个月一张。我希望在打开电子表格时,将与当前月份匹配的工作表默认设置为活动工作表。 似乎很容易: 不幸的是,SpreadsheetApp首先加载第一张工作表(一月),然后加载我想要的工作表。在一些移动客户端上,这会导致不可接受的长加载时间。 在电子表格中的第一张工作表作为活动工作表加载之前,有没有办法钩入序列?

  • 我想不断更新/重写到谷歌表。不过,我不能只是更新它,而不清除旧的工作表,因为有时更新的行比之前的行和旧的行留在工作表中。 因此,开发者页面上列出的协议是: 翻译成python会是这样的,我认为: 返回错误: GoogleapClient。错误。HttpError:https://sheets.googleapis.com/v4/spreadsheets/[uniqueIDhere]/values:

  • 我尝试使用“读取多个范围”示例: https://sheets.googleapis.com/v4/spreadsheets/{SpreadsheetID}/values:batchGet?范围=表1!B:B 来自:Google Sheets API v4示例我用我的电子表格ID替换了"spreadsheetId"。但当我发送GET请求(通过邮递员)我收到: 比我以前https://develop

  • 可编辑链接-https://docs.google.com/spreadsheets/d/1vrzchTHVwwzc9wgFGmtc_zBsh27CEtE7KOyeNDuLwC0/edit?usp=sharing 发布至网页-https://docs.google.com/spreadsheets/d/e/2PACX-1vRaJd3YpKnemAneU47RI58m7cxQsYFdViFBxJPV