将行转换为具有条件的列

时间:2018-02-28 00:48:12

标签: excel transpose

我需要将以下excel转换为列。我已经尝试使用内置公式和远程数据透视表,但这对我没什么帮助,因为数据在一个列中,我正在寻找转置到多个列。

Excel :(单列中的所有数据)

ABC1
F1
D1
Sym1
ABC2
See Link2
ABC3
F3
D3
Sym3
ABC4
See Link4
ABC5
See Link5

输出应该是:

ABC      Functions      Description       Sym        See Link
ABC1      F1                D1            Sym1
ABC2                                                  See Link1
ABC3      F3                D3            Sym3
ABC4                                                  See Link4
ABC5                                                  See Link5

查看'查看链接'对于行数据存在,不存在功能,描述和符号,反之亦然。

1 个答案:

答案 0 :(得分:0)

所以我想出来了。在googlesheet中使用G脚本来实现这一点。对于任何寻找代码的人来说,就是这样:

function run() {
  var inputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Description");
  var rows = new Array(new Array());

  var values = inputSheet.getRange(1, 1, inputSheet.getLastRow()).getValues();
  Logger.log(values.length);
  var j = 0;
  var endOfRow = false;
      var singleRow = new Array();

  for (var row in values) {

   for (var col in values[row]) {
     var value = values[row][col];

     if(value.indexOf("F") != -1) {
      singleRow[1] = value;
     }
     else if(value.indexOf("D") != -1) {
       singleRow[2] = value;
     }
     else if(value.indexOf("See Link") != -1) {
       singleRow[4] = value;
       endOfRow = true;
     }
     else if(value.indexOf("Sym") != -1) {
       singleRow[3] = value;
       endOfRow = true;
     } 
     else {
       singleRow[0] = value;

     }

    }

    if(endOfRow) {
      rows[j] = singleRow;
       j++;
      endOfRow = false;
      var singleRow = new Array();
    }

  }
  for(var d=2; d < rows.length; d++) {
      var singleRow = rows[d];

      for(var f = 0; f < singleRow.length; f++) {
        if(singleRow[f] == undefined) {
          outputSheet.getRange(d, f+1).setValue("");
        } else {
          outputSheet.getRange(d, f+1).setValue(singleRow[f]);
        }
      }
    }

}