2016-07-25 17 views
0

Ich habe folgende Situation:GAS eine Zelle Split und füllt nach unten einem anderen

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

ich diese spalten möchte und füllen unten:

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

am Skript Mit Blick auf ein Komma trennen abgegrenzte Zelle (Function to split text in cell and create column) Ich kann dem Split folgen, aber es ist der Bereich, in dem ich Probleme habe. Ich verstehe, ich sollte eine while Schleife mit der ersten Zelle als var = i und der zweiten Zelle als var = j einrichten. Dump den geteilten Inhalt von i zu einem Array und füllen Sie dann die array.length. Allerdings scheint die Syntax nicht korrekt zu sein.

Ich bin ziemlich neu in JS und GAS so jede Hilfe wäre willkommen.

Danke für die Hilfe.

-JH

Antwort

1

Hier ist eine benutzerdefinierte Funktion, die für Sie arbeiten sollten:

/** 
* 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, "") 
}) 
} 

Diese Funktion kann wie folgt verwendet werden:

enter image description here