2014-02-15 3 views
-1

두 셀 사이의 차이점을 계산하여 세 번째 셀에 배치하는 VBA 스크립트를 만들려고했습니다. 다음 상황에서 작동해야합니다.세 번째 셀의 두 셀 간의 차이

  1. 세 개의 셀이 선택됩니다. 그 중 두 개는 값을 가지며 세 번째 것은 비어 있습니다.
  2. VBA 스크립트가 실행됩니다.
  3. VBA 스크립트는 값이있는 셀 간의 차이를 계산합니다.
  4. 차이점은 세 번째 (공백) 셀에 기록됩니다.

당신이 이해할 수 있듯이 이러한 VBA 스크립트는 오른쪽, 아래, 왼쪽 또는 위의 셀에서 차이를 기록 할 수 있어야합니다.

저는 vba에서 초보자입니다. 따라서 내 vba 코딩은 포럼에서 많이 달라지며 비슷한 문제가 논의되었습니다. 그러나 이번에는 해결책을 찾지 못했습니다.

+0

더 큰 숫자에서 더 작은 숫자를 뺍니까? 또는 상단이 가장 오른쪽 하단 값이 가장 큰 값을 왼쪽? 또는 그 상황 중 하나의 반대? 이러한 차이는 최종 결과에 큰 영향을 줄 수 있습니다. 아니면 당신은 절대적인 차이를 원합니까? (숫자를 빼고 해는 항상 양수의 양의 차이)? 선택 사항이 *** 일 때 오류 메시지를 원하십니까 *** *** 3 개의 셀 중 1 개가 비어 있습니까? – user2140261

+0

3 개 이상의 셀을 선택한 경우 매크로를 계속해서 왼쪽 위나 맨 아래 가장 오른쪽의 빈 셀에 값을 넣으시겠습니까? – user2140261

+0

매크로가 "모서리"셀과 "중간"셀의 차이를 계산할 수있는 것이 가장 좋습니다. 여기와 같이 : 왼쪽에서 오른쪽으로 선택 [100 (코너), 20 (가운데), 공백 (코너)] -> 100 - 20 = 80, 20 - 100 = -80. 또한 수식을 저장하면 좋을 것입니다. L42의 답은 효과가 있지만 결과는 가치로 저장됩니다. 또 다른 좋은 점은 연속적이지 않은 범위에서 일할 수있는 능력 일 것입니다. 예를 들어 첫 번째 선택에서 (100, 20) 사이의 차이를 계산할 값이 있고 두 번째 선택은 차이가 계산되는 빈 셀입니다. – afmoroz

답변

1

이 시도 :

Dim rng As Range, cel As Range 

Set rng = Selection 

If rng.Cells.Count <> 3 Then Exit Sub 

With Application.WorksheetFunction 
    If .CountA(rng) <> 2 Then Exit Sub 
    For Each cel In rng 
     If cel.Value = "" Then 
      Select Case True 
      Case cel.Address = rng(1).Address 
       cel.Value = rng(2)-rng(3) 
      Case cel.Address = rng(2).Address 
       cel.Value = rng(1)-rng(3) 
      Case cel.Address = rng(3).Address 
       cel.Value = rng(1)-rng(2) 
      End Select 
      Exit For 
     End If 
    Next 
End With 

당신에게 맡겨 소이 테스트하지.
simoco 용으로 편집 됨

+1

L42, '세 번째 셀의 두 셀 간의 차이', 합계가 아님 :) –

+1

@simoco 하하 죄송합니다. 나는 조금 떨어져서 졸고있을 것임에 틀림 없다. :) – L42