自动填充单元格值的基础上,上单元格值的谷歌表

问题描述 投票:0回答:1

我有从SQL数据库导出的客户购买数据。Google sheets的输出格式是这样的。

ID  name   address          phone       product name
1   Bob    2030 random road 6265609245  A
1                                       B
2   Peter  5453 golden drive            A
2                                       D
3   Jason  1 dna way                    C
4   James  sfo drive                    A
4                                       B
4                                       C

我想知道是否可以在空白单元格中自动填入上层单元格的值 如果它们有相同的ID。为了说明这一点,请看下面所需的输出格式。

ID  name   address          phone       product name
1   Bob    2030 random road 6265609245  A
1   Bob    2030 random road 6265609245  B
2   Peter  5453 golden drive            A
2   Peter  5453 golden drive            D
3   Jason  1 dna way                    C
4   James  sfo drive                    A
4   James  sfo drive                    B
4   James  sfo drive                    C

任何帮助将是非常感激的!

google-apps-script google-sheets
1个回答
0
投票

我假设你想根据ID来完成这一行。如果我的假设是正确的,你可以使用这个Apps Script代码。

function so62048323() {
  var data = SpreadsheetApp.getActive().getDataRange().getValues();
  var nameDictionary = new Object();
  var addressDictionary = new Object();
  var phoneDictionary = new Object();

  for (var r = 1; r < data.length; r++) {
    if (data[r][0] != '') {
      if (data[r][1] != '') {
        nameDictionary[data[r][0]] = data[r][1];
      }
      if (data[r][2] != '') {
        addressDictionary[data[r][0]] = data[r][2];
      }
      if (data[r][3] != '') {
        phoneDictionary[data[r][0]] = data[r][3];
      }
    }
  }

  for (var r = 1; r < data.length; r++) {
    if (data[r][1] == '') {
      data[r][1] = nameDictionary[data[r][0]];
    }
    if (data[r][2] == '') {
      data[r][2] = addressDictionary[data[r][0]]
    }
    if (data[r][3] == '') {
      data[r][3] = phoneDictionary[data[r][0]];
    }
  }

  SpreadsheetApp.getActive().getDataRange().setValues(data)
}

该代码将启动读取你所有的表与。SpreadsheetApp.getActive(), Spreadsheet.getDataRange()Range.getValues(). 之后,它将创建三个 对象 作为字典。

之后,代码将遍历每一行,并在字典中记录与ID相关的每个值(姓名、电话和地址)。之后,代码将重复操作,但写下这些值。最后,所有的数据都会用Range.setValues()加载到工作表中。例如,如果我们有这个电子表格。

Initial spreadsheet

而我们使用这个脚本,我们最终会得到这样的结果:

Final step

请注意,一些ID没有任何电话,这些都是空的。我知道你可能使用了一个非常大的数据库,所以我对代码进行了优化,使其在不考虑数据大小的情况下运行速度最快。另外,即使行没有排序,这段代码也能运行。如果你有疑问,不要犹豫,可以问我任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.