Google 工作表,将数据重新排列到新行

Google Sheets, rearrange data to new rows

第二个(希望是最后一个)google sheet 从今天到永远的问题。 当我通过 google sheets 将我的数据从一个管理系统导入到另一个管理系统时,我在遵循新系统导入数据的方法时遇到了一些困难。 所以目前我的 sheet 看起来像这样:

A B C D E F G H I J K L M N
1 ID First Name Email Address Phone Email ID (Email IDs) Number (Contact Numbers) Is Primary (Email IDs) Is Primary Phone (Contact Numbers) Is Primary Mobile (Contact Numbers) Mobile No Company Name Link Document Type (Links) Link Name (Links) Link Title (Links)
2 FERTICLINIC HOME CARE CENTRE L.L.C . FERTICLINIC HOME CARE CENTRE L.L.C . HIDDEN@hotmail.com 971 2 1234567 HIDDEN@hotmail.com 1 971 50 12345678 1 FERTICLINIC HOME CARE CENTRE L.L.C . Customer 1 FERTICLINIC HOME CARE CENTRE L.L.C . 1 FERTICLINIC HOME CARE CENTRE L.L.C .

我想要做的是让 D 和 J 列上的数字显示在 F 处(第二个数字将在新行上) 所以最终结果看起来像这样

A B C D E F G H I J K L M N
1 ID First Name Email Address Phone Email ID (Email IDs) Number (Contact Numbers) Is Primary (Email IDs) Is Primary Phone (Contact Numbers) Is Primary Mobile (Contact Numbers) Mobile No Company Name Link Document Type (Links) Link Name (Links) Link Title (Links)
2 FERTICLINIC HOME CARE CENTRE L.L.C . FERTICLINIC HOME CARE CENTRE L.L.C . HIDDEN@hotmail.com 971 2 1234567 HIDDEN@hotmail.com 971 50 12345678 (From J) 1 971 50 12345678 1 FERTICLINIC HOME CARE CENTRE L.L.C . Customer 1 FERTICLINIC HOME CARE CENTRE L.L.C . 1 FERTICLINIC HOME CARE CENTRE L.L.C .
3 971 2 1234567 (From D)

所以脚本基本上会将数据从“J”复制到“F”,然后创建一个新行并在新行上将数据从“D”复制到“F”。

我希望这是有道理的,我们将不胜感激。 谢谢!

在您的情况下,下面的示例脚本怎么样?

示例脚本:

请设置源和目标 sheet 名称。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = ss.getSheetByName("Sheet1"); // Please set the source sheet name.
  var dstSheet = ss.getSheetByName("Sheet2"); // Please set the destination sheet name.

  var [, ...values] = srcSheet.getDataRange().getValues();
  var res = values.flatMap(r => {
    r[5] = r[9];
    var temp = Array(r.length).fill(null);
    temp[5] = r[3];
    return [r, temp];
  });
  dstSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
}
  • 当此脚本为运行时,每一行被作为2行。 “J”列的值被放入“F”列。并且,“D”列的值被放入“F”列。

参考:

重新映射

function remap() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const [hA,...vs] = sh.getDataRange().getValues();
  let vo = [];
  vs.forEach(([a,b,c,d,e,f,g,h,i,j,k,l]) => {
    let o = [];
    if(d) {
      vo.push([a,b,c,d,e,d,g,h,i,j,k,l]);
    }
    if(j) {
      vo.push(['','','','','',j,'','','','','','']);
    }
  });
  Logger.log(JSON.stringify(vo))
  ss.getSheetByName("Sheet1").getRange(1,1,vo.length,vo[0].length).setValues(vo);
}

您如何看待这样的解决方案?

=TRANSPOSE(QUERY(A2:N2;"select J, D"))

粘贴到 F 列

您只需在设置中启用迭代计算即可。

文件>设置>计算>迭代计算启用此选项并保存