[]
        
(Showing Draft Content)

XLOOKUP

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);
});