2013-02-15 2 views
0

VBA를 처음 사용하고 특정 값에서 동일한 값이 반복되는 횟수를 찾으려고합니다.VBA를 사용하여 반복 된 값을 계산하는 방법

그런 다음 다른 시트의 A 열과 B 열에 반복 값의 값과 개수를 붙여 넣어야합니다.

나는 값 반복 횟수를 계산해야합니다

PSV_Cust_1 
PSV_Cust_1 
PSV_Cust_1 
PSV_Cust_1 
PSV_Cust_1 
PSV_Cust_2 
PSV_Cust_2 
PSV_Cust_2 
PSV_Cust_2 
PSV_Cust_3 
PSV_Cust_3 
PSV_Cust_3 
PSV_Cust_3 
PSV_Cust_4 
PSV_Cust_4 
PSV_Cust_4 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 
PSV_Cust_5 

결과가 있어야한다 :

Value  Count 
PSV_Cust_1 5 
PSV_Cust_2 4 
PSV_Cust_3 4 
PSV_Cust_4 3 
PSV_Cust_5 7 

어느 한 도움 VBA 코드를 사용하여 outpu를 얻을하시기 바랍니다.

+13

를 사용하여 피벗 테이블. 당신은 이것을 위해 vba가 필요하지 않습니다 :) –

+1

지금까지 어떤 시도를 했습니까? 피벗 테이블이나 COUNTIF와 같은 워크 시트 기능을 사용할 수 있습니다. –

답변

4

이 매크로는 당신이 필요로 할 것입니다 :

Sub Summarize(rngSource As Range, rngTarget As Range) 
    Dim d As New Scripting.Dictionary 
    Dim rng As Range 
    Dim var As Variant 

    For Each rng In rngSource 
     If rng <> "" Then 
      If d.Exists(rng.Value) Then 
       d(rng.Value) = d(rng.Value) + 1 
      Else 
       d.Add rng.Value, 1 
      End If 
     End If 
    Next rng 

    rngTarget = "Value" 
    rngTarget.Offset(, 1) = "Count" 
    Set rng = rngTarget.Offset(1) 
    For Each var In d.Keys 
     rng = var 
     rng.Offset(, 1) = d(var) 
     Set rng = rng.Offset(1) 
    Next 
End Sub 

당신은 Visual Basic 편집기 (도구 -> 참조)에 마이크로 소프트 스크립트 라이브러리에 대한 참조를 추가해야합니다. 당신은 다음과 같이 호출 할 수 있습니다

Summarize Sheet1.Range("A1:A24"), Sheet1.Range("C1") 
+0

고맙다. 나는 pvote 테이블 옵션을 사용할 것이다. 지금은 내 꺼낼 수있다. – user2075655

2

COUNTIF (범위, 값) 기능을 사용하면 원하는 것을 할 것 - 그것은 당신이 더 쉽게 검색 할 값을 제한 할 수있는 장점이있다 (피벗 비교 표). 귀하의 데이터가 "고객"이라는 이름의 "Sheet1! A1 : A25"범위에 있다고 가정하십시오 (범위를 선택하고 수식 입력 줄 왼쪽의 주소 상자에 customers을 입력하면됩니다). 그리고 "고객 1, 고객이 ... "고객 (10)을 통해, 당신은에만 나타납니다 몇 번 고객 1과 5 알고 싶어요, 당신은 시트 2에서 다음을 만들 수 있습니다 당신은 단지 세포에서 아래 공식을 드래그 할 수 있습니다 물론

col A  col B 
Value  count 
customer 1 =COUNTIF(customers, A1) 
customer 5 =COUNTIF(customers, A2) 

B1 - 다시 입력 할 필요가 없습니다.

이것은 고객 수를 계산하고 자동으로 업데이트됩니다.이 예제에서는 피벗 테이블보다 쉽습니다.

+3

변화하는 고객 목록을 캡처하려면 피벗 테이블보다 쉽지 않다고 생각한다. –

+0

@DougGlancy - 나는 당신과 동의합니다. 나는 대안으로 "특정 고객의 출현 횟수를 알고 싶을뿐"이라고 전하고 있습니다. 내가 피벗 테이블에 대해 좋아하지 않는 또 다른 점은 크기를 변경할 수 있고 다시 계산해야한다는 것입니다. 나는 OP가 대안을 보는 것으로부터 이익을 얻을 것이라고 생각했다. 나는 Siddarth Rout가 가지고있는 9 개의 "도움이되는"깃발이 피봇 테이블이라는 개념에 OP의 관심을 끌기에 충분해야한다고 생각합니다. – Floris

11

다른 사람들이 제안했듯이 Pivot Table이이를 수행하는 가장 간단한 방법입니다.

1), 당신은

2) 계산 창이 나타납니다

3) 리본에서 Insert -> PivotTable 를 선택하려는 행을 선택 Ok을 클릭 방법은 다음과 같습니다 : 피벗을 만들려면 테이블 :

"보고서에 추가 할 필드를 선택 : 피벗 테이블 필드 목록"에서 오른쪽

4)

enter image description here

:

enter image description here

5 옆의 체크 박스를 클릭) 방금 ​​클릭 한 체크 박스 필드를 '값'목록으로 드래그하여 놓으세요.

enter image description here

6) 그것의 그! 당신은 지금 당신이 무엇을 요구해야합니다 :

enter image description here

+1

좋은 연습입니다! +1 –

+0

감사! 그림을 사용하면 훨씬 쉽게 작업을 수행 할 수 있습니다. – Sam

+0

고맙다. 나는 pvote 테이블 옵션을 사용할 것이고, 지금은 내 꺼낼 수있다. – user2075655

관련 문제