GAS拆分一个单元格并填充另一个单元格

时间:2016-07-25 21:03:16

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

我有以下情况:

Column G              Column H
|Black, Brown, Grey| | dog |
|Calico            | | cat |
|Green, Blue       | | bird|
| ...              | | ... |

我想分开并填写这个:

Column G  Column H
|Black | |dog |
|Brown | |dog |
|Grey  | |dog |
|Calico| |cat |
|Green | |bird|
|Blue  | |bird|
|...   | | ...|

查看脚本以分割逗号描述的单元格(Function to split text in cell and create column)我可以按照拆分进行操作,但它是我遇到问题的填充部分。我知道我应该设置一个while循环,第一个单元格为var = i,第二个单元格为var = j。将i的拆分内容转储到数组中,然后填充array.length。但是,我似乎无法正确使用语法。

我对JS和GAS很陌生,所以任何帮助都会受到赞赏。

感谢您的帮助。

-JH

1 个答案:

答案 0 :(得分:1)

这是一个适合您的自定义功能:

/** 
* Splits the array by commas in the column with given index, by given delimiter
* @param {A2:B20}  range Range reference
* @param {2}  colToSplit Column index
* @param {","}  delimiter Character by which to split
* @customfunction
*/


function advancedSplit(range, colToSplit, delimiter) {
var resArr = [], row;
range.forEach(function (r) {
    r[colToSplit-1].replace(/(?:\r\n|\r|\n)(\d|\w)/g,", ").split(delimiter)
        .forEach(function (s) {
            row = [];
            r.forEach(function (c, k) {               
                row.push( (k === colToSplit-1) ? s.trim() : c);
            })
            resArr.push(row);
        })
})
return resArr.filter(function (r) {
    return r.toString()
        .replace(/,/g, "")
})
}

此功能可以这样使用:

enter image description here