ステートメント制御文の使用例8
使用例8
出現値を重複なしで抽出し、該当する記号(○印)の件数をカウントする。
個人データの行列数が可変。さらに並べ替えも自動的に行うように拡張。

Sub 抽出件数()
Dim c As Range
Dim la, lb As Integer
Dim rs As Long
With Worksheets(1)
Application.ScreenUpdating = False
'ソート
la = .Range("a1").CurrentRegion.Rows.Count 'データ最終行
lb = .Range("a1").CurrentRegion.Columns.Count 'データ最終列
r = .Rows.Count 'シート最終行
Range(Cells(2, 1), Cells(la, lb)).Select
Selection.Sort _
Key1:=Cells(2, 1), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'出現値を重複なしで抽出
With .Range("a1:a" & CStr(la))
For i = 1 To la
Set c = .Find(i, LookIn:=xlValues) '新番号を検索
If Not c Is Nothing Then
firstAddress = c.Address '最初の番号のアドレス
Cells(r, lb + 2).End(xlUp).Offset(1).Select '入力行選択
Selection.Value = c.Value '検索番号を入力
Selection.Offset(, 1).Value = _
c.Offset(, 1).Value '対応する氏名を入力
End If
Next i
End With
'該当の記号(○印)の件数をカウント
lc = .Cells(1, lb + 2).CurrentRegion.Rows.Count
For j = 1 To lc - 1
.Cells(j + 1, lb + 4).Value = _
"=SUMPRODUCT((a2:a" & la & "=" & j & ")*(" & Chr(64 + lb) & "2:" & Chr(64 + lb) & la & "=" & """○""))"
'つまりこの例では、H2 に『 =SUMPRODUCT((a2:a11=1)*(d2:d11="○")) 』が入力される
Next j
.Range("a1").Select
Application.ScreenUpdating = True
End With
End Sub
back top