Excel의 값이 아닌 참조 셀의 수식을 사용하시겠습니까?

Excel의 값이 아닌 참조 셀의 수식을 사용하시겠습니까?

A1에 "=ROW()"가 있다고 가정해 보겠습니다. 셀은 시트의 첫 번째 행이므로 '1'로 표시됩니다.

이제 A2에 "=A1"을 넣었습니다. 불행하게도 이는 공식이 아닌 A1의 값을 참조합니다. 공식을 참조한 경우 A2는 대신 '2' 값을 제공합니다(이것이 제가 원하는 것입니다).

나중에 A1의 수식을 계속 변경하면 A1의 수식에 의존하기 때문에 A2의 값도 변경됩니다.

이 문제를 어떻게 해결하나요?

답변1

Excel 워크시트 함수를 사용하여 이 작업을 기본적으로 수행할 수 있는 방법은 없습니다. 이 기능이 필요하면 VBA를 사용해야 합니다.

Worksheet_Change() 이벤트를 사용할 수 있습니다. 셀 내용이 변경되면 실행되지만 단순 재계산에서는 실행되지 않습니다. 여기에는 변경된 셀을 나타내는 매개변수가 있습니다. 이를 사용하여 수행해야 할 작업이 있는지 확인할 수 있습니다. 이 코드는 사용 중인 워크시트의 코드 영역에 들어가야 합니다. (Alt+F11을 사용하여 VBA를 열고 왼쪽 패널에서 워크시트를 두 번 클릭합니다. "Microsoft Visual Basic -파일 이름- [시트 이름(코드)]"를 제목 표시줄에 표시합니다.)

분명히 아래 코드에서 필요에 따라 시트 이름과 범위를 업데이트하십시오.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim test As Range, src As Range, dest As Range

    Set src = Worksheets("Sheet1").Range("A1")
    Set dest = Worksheets("Sheet1").Range("A2")
    Set test = Intersect(Target, src)
    If Not (test Is Nothing) Then
        dest.Formula = src.Formula
    End If
End Sub

위 코드는 수식을 정확하게 복사합니다. A1 셀에서 F3 셀을 참조하면 A2 셀에서도 F3 셀에 대한 참조를 갖게 됩니다. 이런 일이 발생하지 않도록 하려면 If 문 내부의 줄을 로 변경하세요 dest.FormulaR1C1 = src.FormulaR1C1. 이렇게 하면 수식의 상대 참조가 적절하게 변경됩니다.

destA1 셀의 수식을 기반으로 한 번에 여러 셀을 설정하려는 경우 더 큰 범위로 변경할 수 있습니다 .

한 가지 참고할 점은 해당 셀을 변경하면 해당 셀의 수식이 자동으로 복원되지 않는다는 것입니다. 즉, A2에서 수식을 변경하면 A1 셀에서만 업데이트를 수행하므로 자동으로 다시 복원되지 않습니다. 변화. 이를 방지하려면 줄을 변경하십시오.

Set test = Intersect(Target, src)

에게

Set test = Intersect(Target, Union(src, dest))

답변2

표를 사용하여 이를 달성할 수 있습니다(Excel 2007에서: 범위를 선택한 다음 삽입 - 표;첫 번째 행에는 제목이 포함되어야 합니다.).
수식을 변경할 때마다 전체 열에서 업데이트됩니다(또는 변경 전에 열의 수식이 동일하지 않은 경우 업데이트할지 여부를 묻는 메시지가 표시됩니다).

업데이트

여기테이블에서 계산된 열을 생성하는 방법에 대한 자세한 설명을 찾을 수 있습니다.
이제 셀 중 하나에서 수식을 변경하면 전체 열이 업데이트됩니다.(사무실 지원)
그렇지 않은 경우 파일 - 옵션 - 언어 교정 - "입력 시 자동 서식" 탭에서 "테이블에 수식을 채워 계산된 열 만들기"가 선택되어 있는지 확인하세요.

관련 정보