【问题标题】:Google Scripts Concatenate Cells in different columns谷歌脚本连接不同列中的单元格
【发布时间】:2020-10-28 09:33:22
【问题描述】:

我有以下情况,我想连接不同列中的单元格,但列的数量因情况而异。

示例 1:在单元格 A2 中有 70286 的值,而单元格 B2 中有 playmobil 的值。 F2 的最终结果应该是 +70286 +playmobil

例子2:在A4单元格中有70666的值,在B4单元格中有lego的值,在C4单元格中有70666的值强>忍者。 F2的最终结果应该是+70666 +lego +ninjago

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-formula


    【解决方案1】:

    解决方案:

    Google 表格公式:

    你可以使用TEXTJOIN,如果你想在字符串前面加上一个加号,你可以使用CONCAT来添加它。

    在 F 列中使用此公式:

    =CONCAT("+",textjoin(" +", 1, A2:E2))
    

    如果您不知道要使用多少列,则可以选择整行:

    =CONCAT("+",textjoin(" +", 1, A2:2))
    

    Google Apps 脚本:

    • 我们使用getValues()将第二行的数据作为二维数组获取。
    • 然后我们应用flat() 将其转换为一维。
    • 下一步是使用filter() 删除空单元格。
    • 最后,我们使用reduce()得到最终字符串作为所有字符串的总和。

    可以轻松调整逻辑。您可以对多个单元格等执行此逻辑。

    代码 sn-p:

    function myFunction() {
      const sh = SpreadsheetApp.getActive().getSheetByName('Sheet1');
      const row = 2;
      const data=sh.getRange(row,1,1,sh.getMaxColumns()).
                       getValues().
                       flat().
                       filter(c=>c!='').
                       reduce( (a, b) => `${a} +${b}`);      
      const result = `+${data}`;
      sh.getRange('F1').setValue(result);
      Logger.log(result);
    }
    

    【讨论】:

    • 感谢您的回复。不幸的是,我希望这是一个代码,用于脚本编辑器。同样在您的示例中,您使用 A2:E2,但在我的完整工作表中,我并不总是知道需要连接多少列
    • 如果您不知道您有多少列,那么只需删除E。因此使用这个:=CONCAT("+",textjoin(" +", 1, A2:2))。 @GeorgeChalikiopoulos
    • @GeorgeChalikiopoulos 如果您想要一个脚本解决方案,那么您需要更具体。您究竟需要将输出数据放在哪里?输入数据的范围是多少?您想要预定义的输入还是动态输入?但我看不出使用 google 脚本可以通过一个简单的公式快速实现的任何好处。
    • @GeorgeChalikiopoulos 如果你想看一下,我在 javascript (GAS) 中添加了一个代码 sn-p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多