0

그래서 열 A2와 아래쪽으로 알파벳 순으로 정렬 한 다음 숫자 순으로 정렬 할 수있는 Google 애플리케이션 스크립트를 만들려고했습니다. 예를 들어, 결과 : 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

일부 예제 데이터와 함께 소독 된 Google 시트를 공유 할 수 있다면 유용 할 것입니다. 또한 데이터가 'A2, B5, H1, A3, A1, B4, B2'와 같이 보이고 사전 순으로 정렬하면 'A1, A2, A3, B2, B4, B5, H1'과 같이 보일 것입니다. 그것을 두 번 정렬해야합니다. –

답변

1

문제는 정렬이 실제로 작동하는 방식입니다. 본질적으로 당신은 항상 문자열을 정렬 할 것이고, sort는 각 심볼을 자신의 것으로 평가합니다. 따라서 A1, B4, B10을 가지고 있다면 정렬 알고리즘은 A, B, B를 볼 것이므로 A1을 맨 위에 놓을 것입니다. 그러면 B4와 B1이 보입니다.이 경우 B1이 승리하고 이미 B10, B4를 얻습니다.

필요에 맞게 정렬 알고리즘을 다시 수행해야합니다. 허용되는 유일한 형식이 1 자이고 그 다음 숫자가있는 경우 비교적 쉽습니다. 우선 데이터 배열을 얻으려면 .getValues()을 사용해야합니다. 단순히 첫 번째 위치 다음에 문자열을 분할하면 두 열의 문자와 정수로 끝납니다.

이제 문자로 2d 배열을 정렬 한 다음 숫자로 정렬하는 것이 좋습니다. 그 작업이 끝나면 숫자와 .setValues() 문자열을 다시 시트에 결합하십시오.

관련 문제