source

Excel의 케이스 기능 등가

manysource 2023. 4. 20. 21:35

Excel의 케이스 기능 등가

흥미로운 과제가 있습니다. Excel에서 다음 데이터를 확인해야 합니다.

|   A  -   B  -   C  -  D   |
|------|------|------|------|
|  36  |   0  |   0  |   x  |
|   0  |  600 |  700 |   x  |
|___________________________|

제 ASCII 아트가 형편없어서 죄송합니다.따라서 인접한 셀에 대해 검사를 실행하고 필요에 따라 값을 변환하기 위해 D 열(x)이 필요합니다.기준은 다음과 같습니다.

열 B가 0보다 크면 모든 것이 잘 작동하고 커피를 얻을 수 있습니다.하지 못하면 A1을 변환해야 합니다. ★★★★★★★★★★★★★★★★★,32 = 1420 and에 D유감스럽게도 A와 변환해야 할 것은 관계가 없기 때문에 계산을 하는 것은 불가능합니다.

이 시나리오에서는 케이스나 스위치 스테이트먼트가 완벽하지만, 엑셀의 네이티브 기능은 아니라고 생각합니다.그리고 제 생각엔 많은 것들을 묶는 건드리면 좀 미친 짓이 될 것 같아요=IF()(내 인생의) 나쁜 생각이라고 판단하기 전에 4번 정도 했던 진술들이에요.

VLOOKUP이 할 일 같은데요!

32 - >1420 타입의 매핑을 몇 개의 컬럼에 배치하고 나서, VLOOKUP 기능을 사용해 룩업을 실행할 수 있습니다.

원래의 문제(해결된 지 오래되었을 것으로 생각됨)에 대해서는 언급하지 않고 Choose 기능을 정확히 동작시키는 요령을 최근에 발견했습니다.select case데이터를 수정할 필요가 없는 스테이트먼트입니다.단 한 가지 단점이 있습니다.선택한 조건 중 하나만이 동시에 충족될 수 있습니다.

구문은 다음과 같습니다.

CHOOSE( 
    (1 * (CONDITION_1)) + (2 * (CONDITION_2)) + ... + (N * (CONDITION_N)),
    RESULT_1, RESULT_2, ... , RESULT_N
)

조건 1 ~ N 중 하나만 참이라고 가정하면 다른 모든 조건은 0이 됩니다. 즉, 숫자 값이 적절한 결과에 대응합니다.

모든 조건이 상호 배타적이라고 100% 확신할 수 없는 경우 다음과 같은 방법을 사용할 수 있습니다.

CHOOSE(
    (1 * TEST1) + (2 * TEST2) + (4 * TEST3) + (8 * TEST4) ... (2^N * TESTN)
    OUT1, OUT2, , OUT3, , , , OUT4 , , <LOTS OF COMMAS> , OUT5
)

즉, Excel이 함수가 취할 수 있는 인수 수의 상한을 가지고 있다면, 당신은 그것을 꽤 빨리 찾을 수 있을 것이다.

솔직히 몇 년이 걸렸다는 게 믿기지 않지만, 전에 본 적이 없어서 다른 사람들을 돕기 위해 여기에 놔두기로 결심했어요.

편집: @aTrusty에서 다음 코멘트별로: 다음 형식의 수식을 사용하여 쉼표 수를 줄일 수 있습니다(결과적으로 choose 문은 최대 254건까지 사용할 수 있습니다).

CHOOSE(
    1 + LOG(1 + (2*TEST1) + (4*TEST2) + (8*TEST3) + (16*TEST4),2), 
    OTHERWISE, RESULT1, RESULT2, RESULT3, RESULT4
)

는 " " " 입니다.LOG이 절은 그것을 베이스 2에 넣고 모든 것을 작동시킵니다.

편집: David의 답변에 따르면, 현재 Office 2016에서 일할 수 있는 행운이 있다면 실제 전환 스테이트먼트가 있습니다.읽기 어려울 뿐만 아니라 동작뿐만 아니라 스위치의 효율도 얻을 수 있습니다!

Excel 2016/Office 365에서 스위치 기능을 이용할 수 있게 되었습니다.

SWITCH (식, value1, result1, [default 또는 value2, result2],...[default 또는 value3, result3])

example:
=SWITCH(A1,0,"FALSE",-1,"TRUE","Maybe")

Microsoft - Office 지원

주의: MS는 Excel 2019의 동작만을 문서화하도록 해당 페이지를 업데이트했습니다.결국 2019년에 대한 언급도 삭제될 것이다.2016년의 페이지를 확인하려면 , https://web.archive.org/web/20161010180642/https://support.office.com/en-us/article/SWITCH-function-47ab33c0-28ce-4530-8a45-d532ec4aa25e 를 사용해 주세요.

이것을 시험해 보세요.

=IF(B1>=0, B1, OFFSET($X$1, MATCH(B1, $X:$X, Z) - 1, Y)

WHERE where
= 열 X = 인덱싱할 열
= Y 값을 열수 = 원하는 값을 얻을 수 있습니다.
정확히 일치하는 경우 Z = 0(오류를 처리하려는 경우)

이 솔루션을 사용하여 단일 문자 색상 코드를 설명으로 변환했습니다.

=CHOOSE(FIND(H5,"GYR"),"Good","OK","Bad")

후 "Default"를 사용합니다.CHOOSE()관련 항목을 선택합니다.식탁을 만드는 것보다 조금 더 콤팩트해요.VLOOKUP().

답하기엔 조금 늦었지만 이 짧은 영상이 당신에게 많은 도움이 될 것 같아요.

http://www.xlninja.com/2012/07/25/excel-choose-function-explained/

기본적으로는 선택 기능을 사용합니다.영상에서 설명을 너무 잘해주셔서 20페이지 타이핑하는 대신 제가 할게요.

의 다른 비디오에서는 데이터 검증을 사용하여 제한된 범위에서 선택할 수 있는 드롭다운을 채우는 방법에 대해 설명합니다.

http://www.xlninja.com/2012/08/13/excel-data-validation-using-dependent-lists/

이 두 가지를 조합하여 드롭다운 값을 선택 함수의 인덱스로 사용할 수 있습니다.그는 그것들을 결합하는 방법을 보여주지 않았지만, 그의 비디오가 좋기 때문에 당신은 그것을 알아낼 수 있을 것이라고 확신합니다.문제가 있으면 알려주시면 제가 답변을 업데이트해서 보여드릴게요.

오래된 포스트에 대한 응답인 것으로 알고 있습니다.

If() 함수와 Index()/Match()를 조합한 것이 좋습니다.

=IF(B2>0,"x",INDEX($H$2:$I$9,MATCH(A2,$H$2:$H$9,0),2))

if 함수는 b열에 있는 값을 비교하여 0보다 크면 x를 반환합니다.그렇지 않으면 Index() 함수에 의해 식별되고 Match()에 의해 선택된 배열(정보 테이블)을 사용하여가 대응하는 값을 반환합니다.

이 있습니다.$H$2:$I$9(달러 기호) 공식이 복사될 때 가리키는 위치가 변경되지 않도록 합니다.매치()로 지정합니다.Match()에는 Vlookup()이 필요로 하는 정렬된 목록이 필요하지 않다는 추가 값이 있습니다.match는 값, 0 큼.match()보다큼, 0보다 크다, -1보다 크다, 0보다 크다, -1보다 크다를 할 수 .Match() absolute Match() 했습니다.$H$2:$H$9정확하게 일치하는지 확인합니다.Index()는 Index()를 나타냅니다.배열에서 반환 값이 두 번째 열에 있었기 때문에 2를 입력했습니다.인덱스 배열 아래는 다음과 같습니다.

32   1420

36   1650

40   1790

44   1860

55   2010

목록에서 검색할 'a' 열의 값은 이 예의 첫 번째 열에 있으며 반환되는 해당 값은 오른쪽에 있습니다.조회/참조 테이블은 워크북의 탭 또는 다른 파일에 있을 수 있습니다. -Book2는 파일 이름이고, Sheet2는 '기타 탭' 이름입니다.

=IF(B2>0,"x",INDEX([Book2]Sheet2!$A$1:$B$8,MATCH(A2,[Book2]Sheet2!$A$1:$A$8,0),2))

b의 값이 0보다 클 때 x를 반환하지 않으려면 "빈"/null 등가물에 대해 x를 삭제하거나 0을 입력합니다.

아래는 x가 삭제된 함수의 시작입니다.

=IF(B2>0,"",INDEX...

Excel 버전(Excel-2016 이전)에 SWITCH 스테이트먼트가 없는 경우 VBA 구현은 다음과 같습니다.

Public Function SWITCH(ParamArray args() As Variant) As Variant
    Dim i As Integer
    Dim val As Variant
    Dim tmp As Variant

    If ((UBound(args) - LBound(args)) = 0) Or (((UBound(args) - LBound(args)) Mod 2 = 0)) Then
        Error 450       'Invalid arguments
    Else
        val = args(LBound(args))
        i = LBound(args) + 1
        tmp = args(UBound(args))

        While (i < UBound(args))
            If val = args(i) Then
                tmp = args(i + 1)
            End If
            i = i + 2
        Wend
    End If

    SWITCH = tmp
End Function

구글SWITCH★★★★★★ 。

구문:

=SWITCH(selector; [keyN; valueN;] ...  defaultvalue)

어디에

  • selector는 키와 비교되는 표현입니다.
  • key1, key2, ...는 셀렉터와 비교되는 표현입니다.
  • value1, value2, ...는 셀렉터가 대응하는 키와 같은 경우(만) 선택되는 값입니다.
  • 선택기와 일치하는 키가 없는 경우 default value가 사용됩니다.

예:

=SWITCH("a";"?")                       returns "?"
=SWITCH("a";"a";"1";"?")               returns "1"
=SWITCH("x";"a";"1";"?")               returns "?"
=SWITCH("b";"a";"1";"b";TRUE;"?")      returns TRUE
=SWITCH(7;7;1;7;2;0)                   returns 2
=SWITCH("a";"a";"1")                   returns #VALUE!

사용하려면 Excel을 열고 Develpment tools 탭으로 이동하여 Visual Basic을 클릭하고 This Workbook을 마우스 오른쪽 버튼으로 클릭한 후 Insert를 선택하고 Module을 선택하여 마지막으로 코드를 에디터에 복사합니다.매크로 친화적인 Excel 워크북(xlsm)으로 저장해야 합니다.

오래된 질문이라도 자주 묻는 질문이기 때문에 다른 솔루션을 투고하겠습니다.이것은 매우 우아하다고 생각합니다.

http://fiveminutelessons.com/learn-microsoft-excel/using-multiple-if-statements-excel

IF 기능만을 사용하여 우아합니다.기본적으로 다음과 같이 요약됩니다.

if(조건, 테이블에서 값을 선택/사용, if(조건, 테이블에서 다른 값을 선택/사용)...

기타 등등

HLOOKUP이나 VLOOKUP보다 더 아름답게 동작합니다.

단... 주의 - 스테이트먼트 엑셀이 처리할 수 있는 경우 중첩 수에 제한이 있습니다.

Microsoft는 SWITCH, IFS 및 IFVALUES를 CHOICE 전용 기능으로 바꿉니다.

=CHOOSE($L$1,"index_1","Index_2","Index_3")

최근에 안타깝게도 Excel 2010을 다시 작업해야 했기 때문에 SWITCH 기능이 많이 빠졌습니다.고통을 최소화하기 위해 다음과 같은 방법을 생각해 냈습니다.

=CHOOSE(SUM((A1={"a";"b";"c"})*ROW(INDIRECT(1&":"&3))),1,2,3)
CTRL+SHIFT+ENTER

여기서 A1은 상태가 존재하는 위치입니다(수식이든 뭐든 상관없습니다).좋은 점은 조건을 1회(SWITCH와 마찬가지로)만 입력하면 된다는 것입니다.이 예에서는 a, b, c)와 결과(이 예에서는 1, 2, 3)가 순서가 매겨져 있기 때문에 쉽게 추론할 수 있습니다.

동작은 다음과 같습니다.

  • 상태={"c1";"c2";...;"cn"}은(는) TRUE 또는 FALSE의 N 벡터를 반환합니다(1 및 0과 같이 동작).
  • ROW(INDIRECT(1 &):"&n)는 순서 번호의 N 벡터를 반환합니다. 1;2;3;...n;n
  • 두 벡터를 곱하면 조건이 일치한 로트와 숫자(위치)가 반환됩니다.
  • SUM은 0과 위치를 사용하여 이 벡터를 단 하나의 숫자로 변환합니다. 그러면 CHOICE는 이 벡터를 사용할 수 있습니다.
  • 다른 조건을 추가하는 경우는, INDERVAL내의 마지막 번호를 증분하는 것을 잊지 말아 주세요.
  • ELSE 케이스가 필요한 경우 IFERROR 수식으로 감싸기만 하면 됩니다.
  • 같은 조건을 여러 번 제시하면 공식이 제대로 작동하지 않지만, 어쨌든 아무도 그렇게 하고 싶어하지 않을 것입니다.

Office 2016 이후나 Office 365를 사용하는 경우 IFS라는 CASE 기능과 동일하게 동작하는 새로운 기능이 있습니다.Microsoft 의 메뉴얼에 기재되어 있는 함수의 설명을 이하에 나타냅니다.

IFS 함수는 하나 이상의 조건이 충족되었는지 여부를 확인하고 첫 번째 TRUE 조건에 대응하는 값을 반환합니다.IFS는 여러 개의 중첩된 IF 문을 대신할 수 있으며 여러 조건을 사용하여 읽기 훨씬 쉽습니다.

사용 예를 다음에 나타냅니다.

=IFS(A2>89,"A",A2>79,"B",A2>69,"C",A2>59,"D",TRUE,"F")

기본 결과도 지정할 수 있습니다.

기본 결과를 지정하려면 최종 logical_test 인수에 TRUE를 입력합니다.다른 조건이 모두 충족되지 않으면 해당 값이 반환됩니다.

위의 예에는 기본 결과 기능이 포함되어 있습니다.

상세한 것에 대하여는, Microsoft서포트 메뉴얼을 참조해 주세요.

언급URL : https://stackoverflow.com/questions/5488692/case-function-equivalent-in-excel