명부에 실려있는 사람이 테이블에 몇 명 있는지 알아보십시오.

3373 단어 ExcelVBA

소개



제목이 이해하기 어렵습니다만, 아래의 이미지와 같이, 청소 당번표와 같은 테이블이 있어, 월요일은 그룹 1의 사람이 몇명, 그룹 2의 사람이 몇명으로, 화요일은・・・라고 하는 것을 알고 싶어 VBA 함수를 만들었습니다.



코드



즉시 코드를 작성합니다.

Function CountMember(member_list_rng As Range, target_rng As Range) As Long

Dim members As Variant
members = member_list_rng

Dim rng As Range

Dim i, n As Long
n = 0

For Each rng In target_rng
    For i = 1 To UBound(members, 1)
        If StrComp(rng.Value, members(i, 1)) = 0 Then
            n = n + 1
        End If
    Next i
Next

CountMember = n

End Function


처리 흐름



이어서 처리의 흐름을 설명합니다.

첫 번째 인수 (member_list_rng)는 그룹의 구성원 목록이 나열된 Range 객체이고 두 번째 인수 (target_rng)는 검사하려는 대상의 Range 객체입니다.

우선, Variant 형의 변수 (members)에 제 1 인수의 Range 객체를 격납하면(자), 그룹의 멤버가 배열이 되어 members 에 격납됩니다.

이 배열은 2차원 배열이 되고 인덱스는 0부터가 아니라 1부터 시작한다는 점에 주의해야 합니다.
예를 들어, 다음과 같은 A1~C5의 셀 범위를 멤버에 저장하면 멤버(1 To 5, 1 To 3)가 됩니다. 1차원째가 행수, 2차원째가 열수군요. 이 함수는 첫 번째 인수의 셀 범위로 열 수 = 1의 처리를 가정합니다.



그런 다음 target_rng의 각 셀에 memmbers의 모든 요소와 값이 일치하는지 확인합니다 (StrComp). 그리고 값이 일치하면 n에 1을 더합니다.

마지막으로 n을 반환합니다.

좋은 웹페이지 즐겨찾기