Google sheets 使用2个排序条件转置GSheet表

Google sheets 使用2个排序条件转置GSheet表,google-sheets,Google Sheets,我需要像这样转换这个表: 按城市作为行名称排序,按选票作为列排序: 在Nîmes市,候选人Maël Beaumont获得0.5票,Jean-Jacques Bonnot获得0.49票 然后她将被安排在候选人1排,让·雅克将被安排在候选人2排 其他行(D&E)根据投票值生成 有可能做到这一点吗?实现这一点的一个选项是在应用程序脚本中执行以下操作: 使用从DatasVilles获取所有有用数据 将所有源数据存储在对象中,该对象具有每个不同城市的属性(每个属性键将是城市名称,每个属性值将是关于不同

我需要像这样转换这个表:

按城市作为行名称排序,按选票作为列排序:

在Nîmes市,候选人Maël Beaumont获得0.5票,Jean-Jacques Bonnot获得0.49票

然后她将被安排在候选人1排,让·雅克将被安排在候选人2排

其他行(D&E)根据投票值生成


有可能做到这一点吗?

实现这一点的一个选项是在应用程序脚本中执行以下操作:

  • 使用从
    DatasVilles
    获取所有有用数据
  • 将所有源数据存储在对象中,该对象具有每个不同城市的属性(每个属性键将是城市名称,每个属性值将是关于不同候选人和投票的信息)
  • 通过根据投票对候选项进行排序,转换每个属性值(最初为2D数组),然后使用将数组更改为1D数组,以便将其成功附加到图纸中
  • 使用将数组追加到目标工作表中的第一个空行
可能是以下几点:

函数getTransportosedTable(){ var ss=SpreadsheetApp.getActive(); var origin=ss.getSheetByName(“DatasVilles”);//origin sheet var target=ss.getSheetByName(“目标工作表”);//目标工作表(请相应更改) //获取原点值: var firstRow=2; var-firstCol=1; var numRows=origin.getLastRow()-firstRow+1; var numCols=3; var originValues=origin.getRange(firstRow、firstCol、numRows、numCols).getValues(); //为每个城市创建具有特性的对象,并为每个值创建二维数组: var data={};//存储所有数据的对象 对于(var i=0;ib[2])?-1:1; } } 笔记:
  • 在此示例中,目标工作表称为
    目标工作表
    ,请在脚本中相应更改此名称
  • 在这个示例中,我假设头已经设置到位。如果不是,并且目标工作表为空,它将从第一行开始追加数据
  • 这里使用的是
    appendRow
    ,因此每次脚本运行时,附加的数据都将被复制。如果要避免这种情况,可以在追加数据之前使用
  • 我不明白E列中的值是如何生成的。在这个示例中,它只是投票数。请根据脚本中的首选项更改此选项
参考:

我希望这能有所帮助。

包含每个数据的工作表是DatasVilles,我需要信息的工作表是TestInterface,我可以手动完成,手动绑定每个单元格,但最终我将拥有30多个城市和15个候选城市。E列中的值是如何生成的?你想复制的只是前两个候选人,还是全部?你愿意在应用程序脚本中这样做吗?太感谢了!是的,我第一次尝试在应用程序脚本中这样做,但当我看到更新文件需要多长时间时,我停止了。。但也许你的脚本更快!我来试试!关于您的问题,E列是从另一张纸生成的十六进制颜色,取决于F列的值,我使用了过滤函数