[]
XLOOKUP 함수는 세로 및 가로 셀 범위에서 조회를 수행하며, 근사 일치, 부분 일치(와일드카드 문자 *, ? 등 사용), 정확한 일치 모두를 지원합니다. 기본적으로 XLOOKUP 함수는 정확히 일치하는 결과를 반환합니다.
XLOOKUP 함수는 VLOOKUP, HLOOKUP, LOOKUP 등 다른 조회 함수보다 더 유연하고 강력합니다. XLOOKUP 함수를 다른 조회 함수 대신 사용했을 때의 장점은 다음과 같습니다:
조회 값의 오른쪽이나 왼쪽 데이터도 조회할 수 있습니다.
테이블에서 데이터를 가져올 수 있습니다.
여러 열에서 결과를 반환할 수 있습니다.
세로 및 가로 데이터 모두에 사용할 수 있습니다.
첫 번째 값 또는 마지막 값부터 검색하는(역방향 조회) 기능도 제공합니다.
값 하나뿐만 아니라 범위를 반환할 수 있으며, 일반 배열에서도 작동합니다.
예를 들어, XLOOKUP 함수를 사용하면 제품 ID로 제품 가격을 찾거나, 열에서 세율을 조회하거나, 직원 ID로 직원 이름을 검색하는 등 다양한 조회 작업을 수행할 수 있습니다.
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
이 함수는 다음 인수를 가집니다:
인수 | 설명 |
---|---|
lookup_value | 조회할 값입니다. |
lookup_array | 검색할 조회 배열 또는 셀 범위입니다. |
return_array | 반환할 배열 또는 셀 범위입니다. |
[if_not_found] | [선택] 일치하는 값이 없을 때 반환할 값입니다. 지정하지 않으면 일치하는 값이 없을 경우 #N/A 오류를 반환합니다. Excel에서 잘못된 검색 모드를 지정할 경우(예: 0) #VALUE 오류가 반환됩니다. |
[match_mode] | [선택] 일치 유형을 지정합니다: 0 - 정확히 일치하는 값을 찾습니다. 없으면 #N/A 오류 반환 (기본값) -1 - 정확히 일치하는 값을 찾습니다. 없으면 바로 작은 값을 반환 1 - 정확히 일치하는 값을 찾습니다. 없으면 바로 큰 값을 반환 2 - 와일드카드(*, ?, ~)를 사용한 부분 일치 |
[search_mode] | [선택] 검색 모드를 지정합니다: 0 - 모든 일치 항목을 반환하는 “전체 검색” 모드 (Excel에는 없음) 1 - 첫 번째 항목부터 검색 (기본값) -1 - 마지막 항목부터 역방향 검색 2 - lookup_array가 오름차순 정렬된 상태에서 이진 검색 -2 - lookup_array가 내림차순 정렬된 상태에서 이진 검색 |
not_found | [선택] #N/A 오류를 덮어쓸 수 있습니다. 일반적으로 "Not found", "No match", "No result" 등이 사용됩니다. |
XLOOKUP 함수를 사용할 때 주의할 점:
조회 값이 없으면 #N/A 오류를 반환합니다.
lookup_array와 return_array 인수는 크기가 호환되어야 하며, 그렇지 않으면 #VALUE! 오류가 발생합니다.
숫자 데이터를 받으며, 범위나 테이블 내 값을 조회합니다. 여러 항목이 포함된 배열을 반환합니다.
다음 GIF는 XLOOKUP 함수의 기본 사용법을 보여줍니다.
다음 코드 예제는 XLOOKUP 함수를 사용해 영화명에 대한 정확한 일치를 기준으로 랭킹을 조회하는 기본 예입니다.
$(document).ready(function () {
// Spread 초기화
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
// 동적 배열 지원 활성화
spread.options.allowDynamicArray = true;
// 스타일 생성
var style = new GC.Spread.Sheets.Style();
style.font = "bold 12px Arial";
style.foreColor = "black";
style.backColor = "#EDFDF4";
style.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
// 수식 스타일 생성
var formulaStyle = new GC.Spread.Sheets.Style();
formulaStyle.font = "bold 12px Arial";
formulaStyle.foreColor = "black";
formulaStyle.backColor = "#D3F0E0";
formulaStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
// sheet1 가져오기
var sheet1 = spread.getSheet(0);
// 열 너비 설정
sheet1.setColumnWidth(6, 180);
// 수식 생성
var formula_Exact = '=XLOOKUP(G4,A5:A9,C5:C9)';
// 값 설정
sheet1.setValue(0, 6, '기본 정확한 일치');
sheet1.setValue(1, 6, formula_Exact);
// 데이터 생성
var data = [
["Movie", "Year", "Rank", "Sales"],
["Fargo", 1996, 5, 61],
["L.A. Confidential", 1997, 4, 126],
["The Sixth Sense", 1999, 1, 673],
["Toy Story", 1995, 2, 362],
["Unforgiven", 1992, 3, 159]
];
// 데이터 설정
sheet1.setArray(3, 0, data);
// 값 설정
sheet1.setValue(3, 5, 'Movie');
sheet1.setValue(4, 5, 'Sales');
sheet1.setValue(3, 6, 'Toy Story');
// 수식 설정
sheet1.setFormula(4, 6, formula_Exact);
// 스타일 설정
for (var i = 0; i < 4; i++) {
sheet1.setStyle(3, i, style, GC.Spread.Sheets.SheetArea.viewport);
}
sheet1.setStyle(3, 5, style, GC.Spread.Sheets.SheetArea.viewport);
sheet1.setStyle(4, 5, style, GC.Spread.Sheets.SheetArea.viewport);
sheet1.setStyle(0, 6, formulaStyle, GC.Spread.Sheets.SheetArea.viewport);
sheet1.setStyle(1, 6, formulaStyle, GC.Spread.Sheets.SheetArea.viewport);
});
다음 GIF는 SUM 함수와 XLOOKUP 함수가 함께 두 범위 사이의 모든 값을 합산하는 모습을 보여줍니다.
다음 코드 예제는 SUM 함수와 XLOOKUP 함수를 함께 사용하는 방법을 보여줍니다.
$(document).ready(function () {
// Spread 초기화
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
// 동적 배열 지원 활성화
spread.options.allowDynamicArray = true;
// sheet7 가져오기
var sheet7 = spread.getSheet(0);
// 텍스트 설정
sheet1.setValue(1, 1, 'XLOOKUP 반환 참조');
sheet1.setValue(2, 1, '=SUM(XLOOKUP(B6,B9:B13,E9:E13):XLOOKUP(C6,B9:B13,E9:E13))');
sheet1.addSpan(1, 1, 1, 3, GC.Spread.Sheets.SheetArea.viewport);
sheet1.addSpan(2, 1, 1, 7, GC.Spread.Sheets.SheetArea.viewport);
sheet1.setValue(4, 1, 'Start');
sheet1.setValue(4, 2, 'End');
sheet1.setValue(4, 3, 'Total');
sheet1.setValue(5, 1, 'Grape');
sheet1.setValue(5, 2, 'Banana');
// 데이터 생성
var data = [
["Product", "Quantiy", "Price", "Total"],
["Apple", 23, 0.52, 11.9],
["Grape", 98, 0.77, 75.28],
["Pear", 75, 0.24, 18.16],
["Banana", 95, 0.18, 17.25],
["Cherry", 42, 0.16, 6.8]
];
// 데이터 설정
sheet7.setArray(7, 1, data);
// 수식 설정
sheet7.setFormula(5, 3, "=SUM(XLOOKUP(B6,B9:B13,E9:E13):XLOOKUP(C6,B9:B13,E9:E13))");
// 스타일 설정
for (var i = 1; i < 5; i++) {
sheet7.setStyle(7, i, style, GC.Spread.Sheets.SheetArea.viewport);
}
for (var i = 1; i < 4; i++) {
sheet7.setStyle(4, i, style, GC.Spread.Sheets.SheetArea.viewport);
}
sheet7.setStyle(1, 1, formulaStyle, GC.Spread.Sheets.SheetArea.viewport);
sheet7.setStyle(2, 1, formulaStyle, GC.Spread.Sheets.SheetArea.viewport);
});