如何根据列复制行? Google 张(请仅提供公式)

How to duplicate rows based on columns? Google sheets (only formulas please)

我有这样的东西:

项目 颜色 编号
测试 1 白色 ID001 ST01 ST02 ST03
测试 2 红色 ID002 ST02 ST03

我想要这样的东西:

项目 颜色 编号
测试 1 白色 ID001 ST01
测试 1 白色 ID001 ST02
测试 1 白色 ID001 ST03
测试 2 红色 ID002 ST02
测试 2 红色 ID002 ST03

所以基本上基于最后 3 列的值,我想复制行并将这些列的值分配给创建的每一行。

我正在尝试使用转置和拆分公式以及其他一些东西,但我无法得到我想要的结果..如果不可能,也请告诉我。

function myfunk() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  let vs = sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).getValues();
  sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).clearContent();
  let vA = [];
  vs.forEach((r, i) => {
    if(r.length > 4) {
      let t = r.slice(0,4);
      let u = r.slice(3);
      u.forEach((v,j) => {
        let x = r.slice(0,4);
        x[3] = v;
        vA.push(x);
      });
    } else {
      vA.push(r.slice());
    }
  });
  sh.getRange(2, 1, vA.length, vA[0].length).setValues(vA);
}

Sheet 0 前:

COL1 COL2 COL3 COL4 COL5 COL6
6 6 14 a b c
19 16 16 a b c
2 16 1 a b c

Sheet 0 后:

COL1 COL2 COL3 COL4 COL5 COL6
6 6 14 a
6 6 14 b
6 6 14 c
19 16 16 a
19 16 16 b
19 16 16 c
2 16 1 a
2 16 1 b
2 16 1 c

使用:

=INDEX(SPLIT(QUERY(FLATTEN(IF(D1:F="",,A1:A&"×"&B1:B&"×"&C1:C&"×"&D1:F)), 
 "where Col1 is not null"), "×"))