需要将多组列合并为一组列

时间:2014-05-16 06:04:29

标签: google-sheets

我在Google云端硬盘上有一个Google电子表格,它将表单中的数据捕获到多组具有相同名称的列中。我需要能够将所有列集合成一组列。

我正在使用Google表格捕获家庭营地的RSVP,并在多个字段中向与会者询问名字,姓氏,就餐和年龄。这将生成一个包含多组列的电子表格,其中包含以下标题:

名字 姓氏 参加的膳食 年龄

我不知道任何vba,但我需要将所有列集合在一个单独的工作表上。这可以在Google表格(首选)或Excel中完成。有谁知道我可以收集这些数据的方式吗?

编辑: 我想转过这样的话:

John Smith 周六早餐,周六午餐,周日早餐 15岁及以上 Jane Smith 周六早餐,周六午餐,周日早餐 15岁以上

分为:

约翰 史密斯 周六早餐,周六午餐,周日早餐 15及以上
Jane Smith 周六早餐,周六午餐,周日早餐 15岁以上

1 个答案:

答案 0 :(得分:0)

有一个脚本here,一旦复制到脚本编辑器中,对我有用...并保存,然后像:

=vmerge(A1:D3,E1:H3,I1:L30,M1:P30)  

脚本:

function VMerge() { //Vertical Merge 2.12 (release candidate) - ahab facit 2010
  var maxw=0;
  var l=0;
  var minw=Number.MAX_VALUE;
  var al=arguments.length ;
  for( i=0 ; i<al ; i++){
    if( arguments[i].constructor == Array ) {
       l =arguments[i][0].length ; 
       maxw=l>maxw?l:maxw; minw=l<minw?l:minw; 
    }
    else if ((arguments[i] != "???") && (arguments[i].length!=0) ){ 
            l = 1 ;  // literal values count as array with a width of one cell, empty cells are ignored!
            maxw=l>maxw?l:maxw; minw=l<minw?l:minw;
         }                                                              
  }

  if( maxw==minw) { // when largest width equals smallest width all are equal /
    var s = new Array();
    for( i=0 ; i<al ; i++){
      if( arguments[i].constructor == Array ) s = s.concat( arguments[i].slice() )
      else if ((arguments[i] != "???") && (arguments[i].length!=0)) s = s.concat( [[arguments[i]]] )
    }
    if ( s.length == 0 ) return null ; else return s     
  }
  else return "#N/A: All data ranges must be of equal width!!"   
}