【问题标题】:Is there a way to concatenate a column of data if 2 other columns equal each other?如果其他 2 列彼此相等,有没有办法连接一列数据?
【发布时间】:2022-11-02 12:22:30
【问题描述】:

我正在尝试找到一种方法来连接一列数据,如果其他 2 列使用谷歌应用程序脚本彼此相等。我有一个这样做的公式: "ARRAYFORMULA(TEXTJOIN(" | ",True,IF($A$2:A=D2,$B$2:$B,"")))" 但查看时速度很慢大数据集。

这是我现在所拥有的。

function my_concat() {
  
var ssraw = SpreadsheetApp.openById("1blPwXgg1DTJCTxmWikU5b0IZUgDxxQR13WbN7UI4_Yo");
var sheetraw = ssraw.getSheetByName("TEST");
var range = sheetraw.getRange("B2:B");
var data = range.getValues();
var last = range.getLastRow();


for(var i = 2; i < data.length; i++){
var range1 = sheetraw.getRange(i,1).getValue();
var range2 = sheetraw.getRange(i,4).getValues();
    
    if(range1 == range2){
    var data1 = (data[i] + " | " + data[i]);
    sheetraw.getRange('C' + 2 + ':C' + last).setValue(data1);


}
}
}

这是我的 g-sheet 的链接https://docs.google.com/spreadsheets/d/1blPwXgg1DTJCTxmWikU5b0IZUgDxxQR13WbN7UI4_Yo/edit#gid=1418632603

当我运行脚本时,我得到循环信息逐行并连接该行中的内容。

我得到了什么:鸡胸肉条 - 10 盎司 (oz) |鸡胸肉 - 10 盎司 (oz)

我所期待的:鸡胸肉条 - 10 盎司 (oz) |柚子酱 - 6 毫升 (ml) |酱汁,甜泰式辣椒 - 1 盎司 (oz) |大蒜,未剥皮- 1 瓣| 高分辨率照片| CLIPARTO石灰 - 1 件 (pc) |花生酱 - 1.15 盎司 (oz) |黄瓜,波斯- 1 Piece (pc) |韩国辣椒片 - 1 茶匙 (tsp) |香菜 - 0.25 盎司 (oz) |藜麦,白色 - 0.5 杯 (c) |浓缩鸡汤 - 9.6 克 (g)

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    如果 A = D C = B | C

    function my_concat() {
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getSheetByName("TEST");
      const data = sh.getRange("A2:D" + sh.getLastRow()).getValues();
      let o = data.map((r, i) => {
        if (r[0] == r[3]) {
          r[2] = `${r[1]} | ${r[2]}`;//this doesn't work with table markdown
        }
        return [r[2]];
      })
      sh.getRange(2,3,o.length,o[0].length).setValues(o)
    }
    

    之前的数据:

    A B C D
    1 COL1 COL2 COL3 COL4
    2 8 18 2 13
    3 17 18 8 17
    4 2 0 6 2
    5 2 10 13 2
    6 3 18 6 3
    7 6 5 15 18
    8 5 12 4 10
    9 2 12 16 10
    10 2 17 3 17

    后:

    A B C D
    1 COL1 COL2 COL3 COL4
    2 8 18 2 13
    3 17 18 18 , 8 17
    4 2 0 0 , 6 2
    5 2 10 10 , 13 2
    6 3 18 18 , 6 3
    7 6 5 15 18
    8 5 12 4 10
    9 2 12 16 10
    10 2 17 3 17

    我稍微修改了代码以使用逗号,因此它可以与表降价一起使用

    【讨论】:

    • 感谢您提供此代码 Cooper,这对于连接彼此相邻的 2 列数据非常有用,但是如果另一列中的所有值都相同,则这不适用于连接单个列中的所有值。
    • 我没有在您的问题中看到第二个要求,也许您可​​以使用一些前后显示的图像更详细地解释一下。您还可以使用降价表来提供该信息creating markdown tables
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2020-08-11
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多