! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

[WinForms] 수식에 참조 사용하기 > 온라인 스터디

본문 바로가기

9. 수식 [WinForms] 수식에 참조 사용하기

페이지 정보

작성자 GrapeCity 작성일 2021-10-27 17:24 조회 1,093회 댓글 0건

본문

수식은 다른 셀의 값을 참조할 수 있습니다. 예를 들어, 두 셀에 입력된 값의 합을 구하기 위해 수식은 행과 열로 된 셀 좌표를 참조합니다. 셀 참조시에는 ReferenceStyle 속성을 사용하여 참조 표기법을 설정할 수 있습니다.


 표기법

 설명

 A1

 열과 행 좌표로 문자와 숫자를 사용합니다. 절대 좌표에는 달러 표시($)를 사용합니다.

 R1C1

 행 좌표 표시를 위해 'R'과 숫자를, 열 좌표 표시를 위해 'C'와 숫자를 사용합니다. 상대 좌표에는 대괄호 []를 사용합니다.


아래 코드를 통해 참조 표기법을 설정 및 사용할 수 있습니다.

  • A1 표기법

    fpSpread1.Sheets[0].ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1;
      fpSpread1.Sheets[0].Cells[2, 2].Formula = "SUM(A1:A6)";


  • R1C1 표기법

    fpSpread1.Sheets[0].ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1;
      fpSpread1.Sheets[0].Cells[2, 2].Formula = "SUM(R1C1:R6C1)";

     



상대 참조 


R1C1 표기법으로 상대 참조를 사용해 보겠습니다. 예를 들어, 셀 B2를 기준으로 B2의 왼쪽에 위치한 셀 A2의 상대 좌표는 RC[-1]입니다. 반면, B2의 오른쪽에 위치한 C2의 상대좌표는 RC[1]입니다. 아래 이미지와 같이 샘플 데이터가 입력되어있을 때, 상대 참조를 사용하여 셀 B2에 A2+B1을 계산하는 수식을 입력해보겠습니다.

06_SampleData


  1. ReferenceStyle 속성을 사용하여 R1C1 표기법을 설정합니다.

    // 활성화된 시트의 참조 스타일을 상대참조로 설정합니다.
      fpSpread1.ActiveSheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1;

  2. 수식을 입력하는 셀을 기준으로 상대 좌표를 사용한 수식을 입력합니다. 예시 코드에는 셀 B2에 수식을 입력하고 있으므로, B2가 기준이 됩니다. 상대 좌표 RC[-1]는 기준 셀에서 왼쪽으로 한 열 이동한 셀 A2를 가리키며, 상대 좌표 R[-1]C는 기준 셀에서 위로 한 행 이동한 셀 B1을 가리킵니다. 따라서 B2에는 A2+B1의 결과값인 6이 표시됩니다.

    // 셀 B2에 B2의 왼쪽 셀(B1)과 위쪽 셀(A2)의 합을 계산하는 수식을 입력합니다.
      fpSpread1.ActiveSheet.Cells["B2"].Formula = "RC[-1]+R[-1]C";

    07_RelativeReference


샘플을 다운로드하여 전체 코드를 확인해 보실 수 있습니다.

상대참조 사용하기 - 샘플 다운로드




범위 참조

Spread는 범위 참조를 지원합니다. 이때 시작 행과 끝행이 동일한 참조 유형일수도 있고, 다른 참조 유형으로 구성될 수도 있습니다.

다음의 표는 R1C1 표기법에서 범위 참조의 몇가지 예를 설명합니다. 셀 범위 [A1:A10]에 1부터 10까지의 숫자가 입력되어있다고 가정하고, 셀 B10에 수식이 입력되어있다고 할 때, 결과 값을 계산해봅시다.

 수식

 설명

 결과값

 SUM(R1C[-1]:R5C[-1])

 1행부터 5행까지의 합을 계산합니다. (절대 행 : 절대 행)

 15

 SUM(R1C[-1]:RC[-1])

 1행부터 기준행까지의 합을 계산합니다. (절대 행: 상대 행)

 55

 SUM(RC[-1]:R5C[-1])

 기준행부터 5행까지의 합을 계산합니다. (상대 행: 절대 행)

 15

 SUM(R[-5]C[-1]:RC[-1])

 기준행에서 윗방향으로 5번째에 있는 행부터 기준행까지의 합을 계산합니다. (상대 행 : 상대 행)

 45


열 전체 또는 행 전체를 참조하는 것도 가능합니다.

 표기법

 참조

 설명

 R1C1

 C1:C2

 1열부터 2열까지 열 전체를 참조합니다.

 R1C1

 R1:R2

 1행부터 2행까지 행 전체를 참조합니다.

 A1

 $A:$B

 A열부터 B열까지 열 전체를 참조합니다.

 A1

 $1:$2

 1행부터 2행까지 행 전체를 참조합니다.





교차 시트 참조

수식은 다른 시트에 대한 참조를 포함할 수 있습니다. 첫번째 시트의 A1셀의 값과 두번째 시트의 B1 셀 값을 더한 결과값을 세번째 시트에 표현하는 것을 교차 시트 참조 사용의 일례로 볼 수 있습니다.

교차 시트 참조시에는 '시트이름!셀' 구조로 특정 시트의 셀을 지정합니다. 예를 들어 Sheet1의 A1셀부터 A100셀까지의 합을 계산할 때에는 Sheet1!A1:Sheet1!A100과 같이 데이터 영역을 설정할 수 있습니다.

fpSpread1.Sheets[1].Cells("A1").Formula = "SUM(Sheet1!A1:Sheet1!A100)";


시트 이름에 영숫자가 아닌 문자가 포함될 경우 다음의 규칙을 지켜야 합니다.

  • 공백과 같이 영숫자가 아닌 문자가 포함된 경우 수식에서 시트 이름을 작은따옴표로 묶어줍니다.

    예: 이름이 page 1인경우 'page 1'!A1과 같이 사용합니다.

  • 시트 이름에 작은따옴표 문자가 포함된 경우 수식에 두개의 작은따옴표 문자를 사용합니다.

    예: scott's page인 경우 'scott''s page'!A1과 같이 사용합니다.

교차 시트 참조 허용여부는 EnableCrossSheetReference 속성을 사용하여 설정할 수 있습니다. 이 속성을 false로 설정할 경우 사용자가 다른 시트의 셀에 대한 수식 참조를 입력할 수는 있으나 셀 값으로는 #REF!가 표시됩니다.

// 교차 시트 참조 비허용
  fpSpread1.EnableCrossSheetReference = false;




순환 참조

순환 참조란 셀에 입력된 수식에서 직간접적으로 셀 자신을 참조하는 경우를 의미합니다. 예를들어 다음 이미지와 같이 셀 A1 내에 입력된 수식이 셀 A1을 참조하는 경우가 포함됩니다.

08_CircularReference

순환 참조는 일반적으로 동일한 함수를 반복하여 최적값에 접근하기 위해 함수를 재귀적으로 수행하는 데 사용됩니다. 이때 MaximumIteration 속성을 사용하여 함수가 자체적으로 반복(재귀)하는 횟수를 설정할 수 있습니다. 또한 MaximumChange 속성으로 변화 한도값을 설정할 수 있습니다. 예제를 따라 순환참조를 사용해 보겠습니다.

  1. Iteration 속성을 사용해 시트에서 순환 참조 계산 여부를 설정합니다. 기본값은 False이며 순환참조를 계산하지 않습니다. 이때 셀에는 순환참조를 발생시키는 수식이 입력되어있으나, 계산은 수행하지 않습니다.

    // 활성화된 시트에서 순환 참조를 사용하도록 설정합니다.
      fpSpread1.ActiveSheet.Iteration = true;


  2. MaximumChange 속성을 사용하여 시트에 대한 최대 반복 계산 횟수를 설정합니다.

    // 최대 반복계산 횟수를 설정합니다.
      fpSpread1.ActiveSheet.MaximumChange = 5;


  3. MaximumIterations 속성을 사용하여 변화 한도값을 설정합니다.

    // 변화 한도값을 설정합니다.
      fpSpread1.ActiveSheet.MaximumIterations = 5;


  4. 순환 참조가 발생하도록 셀에 데이터와 수식을 입력합니다.

    // 샘플 데이터 및 수식을 입력합니다.
      fpSpread1.ActiveSheet.SetValue(0, 1, 20);
      fpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3");
      fpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1");


  5. 코드 실행 시, 다음과 같은 결과를 확인할 수 있습니다.

    09_CircularReference


샘플을 다운로드하여 전체 코드를 확인해 보실 수 있습니다.

순환참조 - 샘플 다운로드




지금 바로 Spread.NET을 다운로드하여 직접 테스트해보세요!

spnet.png


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

인기글

더보기
  • 인기 게시물이 없습니다.
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.