所以我一直在尝试创建一个谷歌应用程序脚本,这将允许我简单地按顺序排列A2和A2,首先按字母顺序排序,然后按字母顺序排序。我想最终的结果,例如,排序:A2,B5,H1,A3,A1,B4,B2。成为:A1,A2,A3,B2,B4,B5,H1等
所以目前我的代码如下所示:
function onOpen(){
var ui = SpreadsheetApp.getUi();
ui.createMenu('Order Adresses')
.addItem('Order', 'orderNumber')
.addToUi();
}
function orderNumber() {
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
var tableRange = "A2:A500"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
此代码允许我按字母或数字对列进行排序。但不是两个。例如,它会按字母顺序对其进行排序,然后按1,10,11,12,2,3,4等顺序列出以下数字。
答案 0 :(得分:1)
问题是排序实际上是如何运作的。从本质上讲,您将始终对字符串进行排序,并对其自身的每个符号进行排序。因此,如果您有A1,B4,B10,排序算法将查看A,B和B,因此它将A1置于顶部。然后它会看B4和B1,在这种情况下B1赢了,我们已经得到了B10,B4。
您需要重新排序算法以满足您的需求。如果允许的唯一格式是1个字母,然后是任意数量的数字,那么它相对容易。首先,您需要使用.getValues()
来获取数据数组。只需在第一个位置之后拆分字符串,您就会在两列中找到字母和整数。
现在只需先按字母排序一个二维数组然后按数字排序。完成后,将带有数字的字符串和.setValues()
加回到表格中。