명부에 실려있는 사람이 테이블에 몇 명 있는지 알아보십시오.
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을 반환합니다.
Reference
이 문제에 관하여(명부에 실려있는 사람이 테이블에 몇 명 있는지 알아보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yakkeman/items/dc277b1dd3754a02ffc6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)