For ループを使用して、アクティビティ (および/またはその他の関連情報) を個人固有の配列に割り当てることができます。次に、配列を使用して電子メールを設定します。
これはあまりエレガントではありませんが、提供されたサンプル データで実行されます。配列データを使用する (そしてアイテムを反復処理する) か、プレイヤーが電子メールに入力するためにカンマ区切りの文字列を使用することができます。
Public Sub ReportToPeople()
Dim i As Integer, j As Integer
Dim arrPlayerX()
Dim arrPlayerY()
Dim arrPlayerZ()
Dim strPlayerX As String
Dim strPlayerY As String
Dim strPlayerZ As String
ReDim arrPlayerX(1 To 1)
ReDim arrPlayerY(1 To 1)
ReDim arrPlayerZ(1 To 1)
' No clue how large your dataset is...
For i = 2 To 100
If Cells(i, 1).Value = vbNullString Then Exit For
Select Case Cells(i, 2).Value
Case "Player X"
Call fArrIncrementAndAdd(arrPlayerX, Cells(i, 3).Value, strPlayerX)
Case "Player Y"
Call fArrIncrementAndAdd(arrPlayerY, Cells(i, 3).Value, strPlayerY)
Case "Player Z"
Call fArrIncrementAndAdd(arrPlayerZ, Cells(i, 3).Value, strPlayerZ)
End Select
Next i
Call MsgBox(strPlayerX) 'or use Debug.Print strPlayerX
End Sub
Public Function fArrIncrementAndAdd(ByRef arrTheArray, ByVal strValueToAdd, ByRef strWholeString)
Dim c As Integer
c = UBound(arrTheArray)
If arrTheArray(c) <> vbNullString Then ReDim Preserve arrTheArray(1 To (c + 1))
arrTheArray(c) = strValueToAdd
strWholeString = strWholeString & "," & strValueToAdd
If UBound(arrTheArray) = 1 Then strWholeString = Replace(strWholeString, ",", "") ' removes leading comma on first item
End Function