수식 내에서 명명 된 셀을 자동 계산 / 해결하는 방법은 무엇입니까? 지속적으로 값을 변경하기 때문에이 작업을 수행 해야하며

나는이 A1 = 5 내가 추가 한 A1을 이름 “으로 주인공 “.

내가 5=Protagonist 를 생각해 내면 .

D12에서 내가하고 싶다고 말하면 6=Protagonist+1 이 나올 것입니다 .

  • 내가 달성하고자하는 것은 “대체입니다 주인공 에” 5
    과가 D12의 공식은 남아있다 =5+1.

A1이 지속적으로 값을 변경하기 때문에이 작업을 수행 해야하며 값을 사용하는 수식을 만들 때 보유한 값만 유지하면됩니다.

(수동 내가 선택할 수 있습니다 알고 주인공 과 충돌 F9를 내가 그것을해야 할 공식의 그 부분을 해결하기 위해,하지만 금액에 중요한 시간 소비를 먹으 렴)

이것은 공식을 입력하고 해결 한 후에 발생할 수 있습니다. 타이핑하는 동안 수식 입력 줄에 발생할 수 있다면 정말 놀랍지 만 vba가 그렇게 확장되지는 않을 것입니다.



답변

계산 된 값으로 바꿔야 할 경우 :

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count = 1 Then
    If Left(Target.Formula, 1) = "=" And IsNumeric(Intersect(Range("B1:F1000"), Target)) Then
      Dim a As Variant
      For Each a In Array("protagonist", "anotherNameToChange")
        While InStr(1, Target.Formula, a, 1)
          Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)
        Wend
      Next
    End If
  End If
End Sub

원하는대로 배열의 모든 이름에 대해 자동으로 수행합니까?

모든 이름에 대해 필요한 경우 followimg 2 행을 변경하십시오.

For Each a In Array("protagonist", "anotherNameToChange")

로 변경 :

For Each a In ThisWorkbook.Names

Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)

Target.Formula = Replace(Target.Formula, a, Evaluate(a.Value), , , 1)

이것은 대소 문자를 구분하지 않습니다 🙂


답변

이것을 시도하십시오 :

Sub qwerty()
   Dim N As Name, FixString As String

   Set N = ActiveWorkbook.Names("Protagonist")
   FixString = N.RefersToRange

   For Each cell In Cells.SpecialCells(xlCellTypeFormulas)
      cell.Formula = Replace(cell.Formula, "Protagonist", FixString)
   Next cell
End Sub

편집 # 1 :

Event Macroqwerty 에서 호출하려면 다음과 같이 사용하십시오.

Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("A1:C100")) Is nothen Then
   Else
      Application.EnableEvents = False
         Call qwerty
      Application.EnableEvents = True
   End If
End Sub


답변

귀하의 질문을 이해 한 결과 불가능합니다.

나는 그것이 존재한다면,이 행동을 원하는 당신의 뒤에있는 추론 (비즈니스 로직)을 이해하고 통합 문서를 재 형식화하는 것이 대답이라고 생각합니다.


답변