SORTBY 함수

SORTBY 함수는 해당 범위 또는 배열의 값을 기준으로 범위 또는 배열의 콘텐츠를 정렬합니다.

설명
app.js
index.html
styles.css

SORTBY 함수는 해당 범위 또는 배열의 값을 기준으로 범위 또는 배열의 콘텐츠를 정렬합니다. 예:

=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], …) 
인수 필수 설명
array Y 정렬할 배열 또는 범위
by_array1 Y 정렬할 배열 또는 범위
[sort_order1] N 정렬에 사용할 순서. 오름차순의 경우 1, 내림차순의 경우 -1. 기본값은 오름차순입니다.
[by_array2] N 정렬할 배열 또는 범위
[sort_order2] N 정렬에 사용할 순서. 오름차순의 경우 1, 내림차순의 경우 -1. 기본값은 오름차순입니다.

참고:

  • SORTBY 함수는 allowDynamicArray가 true인 경우에만 유효합니다.
  • SORTBY 함수는 배열을 반환하며, 이 배열은 수식의 최종 결과인 경우 유출됩니다.
  • 배열은 값 행, 값 열 또는 값 행과 열의 조합으로 간주할 수 있습니다.
SORTBY 함수는 해당 범위 또는 배열의 값을 기준으로 범위 또는 배열의 콘텐츠를 정렬합니다. 예: 인수 필수 설명 array Y 정렬할 배열 또는 범위 by_array1 Y 정렬할 배열 또는 범위 [sort_order1] N 정렬에 사용할 순서. 오름차순의 경우 1, 내림차순의 경우 -1. 기본값은 오름차순입니다. [by_array2] N 정렬할 배열 또는 범위 [sort_order2] N 정렬에 사용할 순서. 오름차순의 경우 1, 내림차순의 경우 -1. 기본값은 오름차순입니다. 참고: SORTBY 함수는 allowDynamicArray가 true인 경우에만 유효합니다. SORTBY 함수는 배열을 반환하며, 이 배열은 수식의 최종 결과인 경우 유출됩니다. 배열은 값 행, 값 열 또는 값 행과 열의 조합으로 간주할 수 있습니다.
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(_getElementById("ss")); initSpread(spread); }; function initSpread(spread) { spread.options.allowDynamicArray = true; var sheet = spread.getActiveSheet(); spread.suspendPaint(); spread.suspendCalcService(); sheet.name('SORTBY'); sheet.defaults.colWidth = 80; sheet.setColumnWidth(0, 20); sheet.setColumnWidth(1, 20); sheet.setText(1, 2, 'Use the SORTBY function to sort a range or array based on the values in a corresponding range or array. Syntax: SORTBY(array, by_array1, [sort_order1], [[by_array2], [sort_order2]],…)'); var row = 2; var col = 2; var col2 = col + 5; var formula = 'SEQUENCE(1, 5)'; sheet.setText(row, col, formula); sheet.setFormula(++row, col, formula); row++; applyTableStyleForRange(sheet, row + 1, col, 5, 5); formula = 'DATE(YEAR(TODAY()), C' + row + ':G' + row +' , 1)'; var formatter = 'mmmm'; sheet.setText(row + 1, col2, ' <--- ' + formula + ' with ' + formatter); sheet.setFormula(++row, col, formula); sheet.getRange(row, col, 1, 5).formatter(formatter); row++; formula = 'RANDARRAY(4,5)'; formatter = '0.000000' sheet.setText(row, col2, ' <--- ' + formula + ' with ' + formatter); sheet.setFormula(row, col, formula); sheet.getRange(row, col, 4, 5).formatter(formatter); row += 6; applyTableStyleForRange(sheet, row, col, 4, 5, { showHeader: false }); formula = 'INT(RANDARRAY(4,5)*100)'; sheet.setFormula(row, col, formula); sheet.setText(row, col2, ' <--- ' + formula); row += 6; applyTableStyleForRange(sheet, row, col, 11, 1); applyTableStyleForRange(sheet, row, col + 2, 11, 1); sheet.setText(row - 1, col + 1, 'Random order: SORTBY(C20:C29,RANDARRAY(COUNTA(C20:C29)))'); sheet.setText(row - 1, col + 7, 'Sort range by birthday column: SORTBY(G20:H27,H20:H27)'); formula = 'SEQUENCE(10)' sheet.setText(row, col, 'Units'); sheet.setText(row, col + 2, 'SortBy'); row++; sheet.setFormula(row, col, formula); formula = 'SORTBY(C20:C29,RANDARRAY(COUNTA(C20:C29)))'; sheet.setFormula(row, col + 2, formula); col += 4; applyTableStyleForRange(sheet, row - 1, col, 9, 2); applyTableStyleForRange(sheet, row - 1, col + 3, 9, 2); sheet.setArray(row - 1, col, [['Name', 'Birthday', '', 'Name', 'Birthday']]); sheet.setArray(row, col, ["Fritz", "Xi", "Amy", "Sravan", "Tom", "Fred", "Hector", "Sal"]); sheet.setFormula(row, col + 1, 'RANDARRAY(COUNTA(C20:C27))*40000'); sheet.setFormula(row, col + 3, 'SORTBY(G20:H27,H20:H27)'); formatter = 'mm/dd/yyyy'; sheet.getRange(row, col + 1, 8, 1).formatter(formatter); sheet.getRange(row, col + 4, 8, 1).formatter(formatter); spread.resumeCalcService(); spread.resumePaint(); } function applyTableStyleForRange(sheet, row, col, rowCount, colCount, options) { var tableName = "tmpTable"; var TableThemes = GC.Spread.Sheets.Tables.TableThemes; // use table to help set style then remove like convert table to range in Excel sheet.tables.add(tableName, row, col, rowCount, colCount, TableThemes.medium7, options); sheet.tables.remove(tableName, 2 /* keep style */); } function _getElementById(id) { return document.getElementById(id); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="ko-kr"/> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-resources-ko/dist/gc.spread.sheets.resources.ko.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" style="width:100%; height: 100%"></div> </div></body> </html>
.sample { position: relative; height: 100%; overflow: auto; } .sample::after { display: block; content: ""; clear: both; } .sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .option-row { font-size: 14px; padding: 5px; margin-top: 10px; } .option-group { margin-bottom: 6px; } label { display: block; margin-bottom: 6px; } input { margin-bottom: 5px; padding: 2px 4px; width: 100%; box-sizing: border-box; } input[type=button] { margin-bottom: 6px; } hr { border-color: #fff; opacity: .2; margin: 5px 0; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }