나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 김영진 (snakesolid)

추천:  2
파일:     조회:  5566
제목:   VBA 실시간 누적함수 오류
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):2007

* 아래줄에 질문을 작성하세요 >>

Private Sub Worksheet_Calculate()

If Range("A1") = Range("B1") Then

            Range("C1").Value = Range("C1").Value + 1

End If

우선 A1은 실시간으로 값이 바뀝니다

이걸로 A1 B1 값이 같아지면 그때마다  C1에 +1씩 더하게 하고있는데
 
A1값이 10초정도 안움직이면 그동안 C1에 계속 1씩 올라가네요
값이 변하지않고 유지되도 딱 한번만 +1이되게 할하려면 어떤 코드를 써야하나요
 
[불량 게시물 신고]  
조삿갓Private Sub Worksheet_Calculate()
  Static a0 As Variant
  Dim a1 As Variant
  a1 = Range("A1").Value
  If a1 <> a0 And a1 = Range("B1") Then
       Range("C1").Value = Range("C1").Value + 1
  End If
  a0 = a1
 End Sub

단, A1 셀의 값이 바뀔 때에만 B1과 비교를 실행합니다.
 (실시간 변경되면서 우연히 직전 값과 같은 값을 가지는 것은
 눈치 채지 못함)
06-14 (15:29)
삭제 ■신고
김영진즉슨 일치했을때 누적이 된다기보다 일치후에 다른값으로 바뀌면서
누적시켜 연속누적을 방지하게끔 만드신건가요?이렇게 응용도 가능한거군요...감사합니다 적용시켜 보겠습니다.
06-14 (18:15)
삭제 ■신고
김영진궁금한게 있습니다.
  Static a0 As Variant
  Dim a1 As Variant
이게 무슨 역할을 하는건가요? 저기써있는 a0 a1 정체가 뭔가요
제가 이렇게 b1부터 b100까지 a1이랑 비교시켜야 하거든요 그럼
  Static a0 As Variant
  Dim a1 As Variant
요거 두줄도 한줄한줄 바꺼줘야 하는건가요?아니면 처음에만 두줄 추가하면 될까요?
06-14 (18:56)
삭제 ■신고
김영진ElseIf a1 <> a0 And a1 = Range("B2") Then
       Range("C2").Value = Range("C2").Value + 1
이렇게 range 부분만 b100하고 c100까지 수작업으로 만들면 되겠군요 감사합니다 ㅎㅎㅎ
06-14 (19:01)
삭제 ■신고
조삿갓변수를 선언할 때 Dim으로 선언하면
매 번 이벤트 헨들러가 실행될 때마다 해당 변수는 0으로
초기화되어 버립니다.
반면 Static으로 선언한 변수는 선언 시 0으로 초기화되었다가
값이 바뀌게 되면 End Sub로 종료했다가 다시 들어올 때
이전 값을 그대로 가지고 있게 됩니다.

즉, 한 번 Calculate 이벤트가 발생하여 실행될 때
일단 B열의 값과 비교하여 카운트한 다음에
그 당시의 A1 셀의 값을 a0에 저장해 두는 것입니다.
다시 Calculate 이벤트가 발생해서 또 실행될 때에는
직전에 실행된 당시의 A1 셀 값(a0에 저장된 값)과 비교해서
그 값이 변경되었을 때에만 조건 카운트를 실행하는 것이지요

B열의 다른 셀에 대해서 반복해야 한다면
Range 대신 Cells를 사용해서 반복루프로 구성해야 합니다.
06-14 (23:28)
삭제 ■신고
        
  

작성일 : 2017-06-14(14:16)
최종수정일 : 2017-06-14(14:16)
 


 ◎ 관련글

  제 목   작성자   날짜
VBA 실시간 누적함수 오류 김영진 2017-06-14
[RE]VBA 실시간 누적함수 오류 조삿갓 2017-06-14
[RE]답변 감사합니다~ 김영진 2017-06-15