programing

엑셀 공식을 읽을 수 있는 방식으로 다시 쓰는 방법은?

elecom 2023. 6. 7. 22:09
반응형

엑셀 공식을 읽을 수 있는 방식으로 다시 쓰는 방법은?

다음과 같은 공식이 있는 Excel 파일이 있습니다.

=IF(OR(ISERROR(G16),ISERROR(G17)),X16,IF(OR(G16="xxx",G16="yyy",G16="zzz"),Y16,IF(G16="333","N\A",IF(G17="333",Z16,IF(D17="",IF((HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W$10)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)), IF((HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)<0,0,(HEX2DEC(W17)-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,FALSE)))))))

저는 그것들을 좀 더 읽기 쉬운 방식으로 쓰여지도록 단순화하고 싶습니다.

  • 엑셀 공식을 들여쓰기 방식으로 편집/작성할 수 있습니까?
  • 어떤 종류의 단순화를 수행할 수 있습니까?
  • 엑셀의 공식 대신 VBA 스크립트를 사용해야 합니까?

공식 막대에서 Alt+Enter를 사용하여 공식을 여러 줄로 만들 수 있습니다.안타깝게도 탭이 없으면 공백만 있으므로 만들고 편집하는 것이 지루해집니다.참고 항목

http://www.dailydoseofexcel.com/archives/2005/04/01/excel-formula-formatter/

참조하는 일부 셀의 이름을 지정하면 전체 내용을 보다 쉽게 읽을 수 있습니다.

도우미 열을 사용하는 예로 다음을 사용하여 공식을 단축할 수 있습니다.

[A1]=VLOOKUP(F16,$M$36:$N$41,2,FALSE)

[B1]=HEX2DEC(W$10)

[C1]=HEX2DEC(W16)

[D1]=HEX2DEC(W17)

그러면 큰 공식은 다음과 같이 단축됩니다.

=IF(OR(ISERROR(G16),ISERROR(G17)),X16,IF(OR(G16="xxx",G16="yyy",G16="zzz"),Y16,IF(G16="333","N\A",IF(G17="333",Z16,IF(D17="",IF((B1-C1)/A1<0,0,(B1-C1)/A1), IF((D1-C1)/A1<0,0,(D1-C1)/A1))))))

이 기능은 모든 셀에 대해 동일한 결과일 때 재호출하지 않을 DATE 또는 NOW와 같은 휘발성 함수를 사용할 때 특히 효과적입니다.

더 읽기 쉬운지 여부는 몰라도 열 제목에 적절한 주석을 달 수 있습니다.

FormulaDesk는 무료 Excel 추가 기능으로, 복잡한 수식을 다시 작성할 필요 없이 보다 읽기 쉽고 쉽게 이해할 수 있습니다.공식을 작성, 편집, 디버깅 및 이해하는 것을 훨씬 쉽게 합니다.'보기 편집'과 '보기 탐색'의 두 가지 모드로 전환할 수 있습니다.

  • '편집' 보기는 Intellisense 등이 포함된 향상된 수식 편집기입니다.사용자가 입력한 대로 형식을 지정하고, 명확하고 이해하기 쉽도록 중첩된 요소를 수직으로 오프셋합니다.

  • '탐색' 보기는 공식을 간단한 중첩/롤업 방식으로 표시하며, 공식의 가장 간단한 최상위 보기를 먼저 사용하지만 내포된 표현식으로 드릴다운할 수 있습니다.이를 통해 현재 결과를 반환하는 방법과 이유를 신속하게 파악할 수 있습니다.녹색 막대(롤업 결과)를 클릭하여 드릴다운합니다.또는 '모두 펼치기', '모두 접기' 버튼을 클릭합니다.

  • 두 보기 모두 다양한 요소(예: 함수, 파라미터 등) 위에 마우스를 올려 놓으면 정의/설명, 현재 값 등과 같은 추가 정보가 포함된 팝업을 볼 수 있습니다.예를 들어 범위를 호버링하면 현재 값이 표시됩니다.

  • 그 밖에도 여러 가지 기능이 있습니다.

[공개:저는 FormulaDesk의 저자입니다.

여기에 이미지 설명 입력

도우미 열과 명명된 범위를 조합하면 공식이 매우 간단합니다.

다음 이미지에서는 명명된 범위가 공식을 해제하는 방법을 볼 수 있습니다.

"가격"은 범위 A2의 이름입니다.A7과 "팽창된_가격"은 B2:B7의 이름입니다.

또한 이름은 지능형입니다.sum(prices)반면에 전체 범위를 합할 것입니다.=+prices*2B2에서 하기로 결정함=+A2*2,=+prices*2B3에서 하기로 결정함=+A3*2등등.

여기에 이미지 설명 입력

단일 공식을 유지하면서 공식을 상당히 단순화할 수 있습니다.당신은 거의 같은 표현을 4번이나 반복하고 있습니다.HEX2DEC/VLOOKUP부분, 만약 당신이 이것을 인식한다면 그것은 단일 인스턴스로 축소될 수 있습니다.

= IF(식<0,0,식)

.....는 다음과 같습니다.

=MAX(0, 공식)

[공식의 숫자 결과의 경우]

그리고 만약 당신이 당신의 IF(D17="..."...식을 주 공식, 즉 이 버전에 중첩시킨다면

=IF(ISERROR(G16&G17),X16,IF(OR(G16={"xxx","yyy","zzz"}), Y16,IF(G16="333","N\A",IF(G17="333",Z16,MAX(0,(HEX2DEC(IF(D17="",W$10,W17))-HEX2DEC(W16))/VLOOKUP(F16,$M$36:$N$41,2,0))))))

당신이 VBA 코드에 대해 물어봤기 때문에, 저는 그것을 해봐야겠다고 생각했습니다.확실히 더 이해할 수 있고 따라서 유지할 수 있지만, 함수에는 11개의 인수가 있기 때문에 약간 다루기 어렵습니다.

Function Magic(d17 As Range _
                , f16 As Range _
                , g16 As Range _
                , g17 As Range _
                , w10 As Range _
                , w16 As Range _
                , w17 As Range _
                , x16 As Range _
                , y16 As Range _
                , z16 As Range _
                , m36 As Range) As Variant


    Dim a As Variant
    Dim b As Variant

    If IsError(g16.Value) Or IsError(g17.Value) Then
        Magic = x16.Value
        Exit Function
    End If

    If g16.Value = "xxx" Or g16.Value = "yyy" Or g16.Value = "zzz" Then
        Magic = y16.Value
        Exit Function
    End If

    If g16.Value = "333" Then
        Magic = "N\A"
        Exit Function
    End If

    If g17.Value = "333" Then
        Magic = z16.Value
        Exit Function
    End If

    If d17.Value = "" Then
        a = Application.WorksheetFunction.Hex2Dec(w10.Value) _
                - Application.WorksheetFunction.Hex2Dec(w16.Value)
        a = a / Application.WorksheetFunction.VLookup(f16.Value, m36, 2, False)
        If a < 0 Then
            Magic = 0
            Exit Function
        Else
            Magic = a
            Exit Function
        End If
    Else
        b = Application.WorksheetFunction.Hex2Dec(w17.Value) _
                - Application.WorksheetFunction.Hex2Dec(w16.Value)
        b = b / Application.WorksheetFunction.VLookup(f16.Value, m36, 2, False)
        If b < 0 Then
            Magic = 0
            Exit Function
        Else
            Magic = b
            Exit Function
        End If
    End If
End Function

공식 논리를 더 쉽게 따르기 위해 셀이 무엇을 나타내는지 몰랐기 때문에 셀 참조에 변수 이름을 지정했습니다.이름을 의미 있는 이름으로 바꾸고 싶을 것입니다.코드는 모듈에 속합니다.

만약 여러분이 그렇게 보이는 공식을 가지고 있다면, 의미 있는 답변을 얻기 위해서 여러분은 여러분이 성취하고자 하는 것에 대한 명확한 지침이 있는 샘플 워크북을 포럼에 게시해야 할 것입니다.

예, 위의 답변 중 일부는 공식을 더 잘 보거나, 불필요한 것을 제거하거나, 일부 VBA 내에서 복잡성을 숨길 수 있는 방법을 지적합니다(제 의견으로는 화장품만 다루며, 아마도 재계산 시간이 크게 늘어난다는 측면에서 상당한 비용이 들 것입니다).

그러나 공식의 의도와 공식이 포함된 워크북의 의도를 알지 못하면 많은 조언을 제공할 수밖에 없습니다.

워크북에 이와 같은 공식이 수만 개 있으면 공식 문제가 아니라 데이터 구조 문제가 발생합니다.가장 효율적인 공식은 피하는 것입니다.이 워크북을 처음부터 다시 설계하여 Excel 테이블, 피벗 테이블 및 고급 필터를 활용할 수 있도록 한다면 수만 개의 공식을 피할 수 있습니다.아마도 수십만 개의 공식이 있을 것입니다.

FormulaDesk는 창에서만 작동합니다.

위의 FormulaDesk 외에도 다음이 있습니다.

다음은 FastExcel의 현재 베타 3에 대한 링크입니다.하지만 그들은 10년 이상 존재해온 것으로 보입니다.29달러입니다.창문만 있는 것 같아요.사이트가 불분명합니다.

http://fastexcel.wordpress.com/2014/04/28/making-sense-of-complex-formulas-an-indenting-viewer-editer/

Precision Calc의 유사한 기능. $12 가끔 이것만 필요하다면 Nagware 무료 버전이 있습니다.Windows 전용.

http://precisioncalc.com/tf/what_is_the_formulator.html

언급URL : https://stackoverflow.com/questions/12713913/how-to-rewrite-excel-formulas-in-a-readable-manner

반응형