やりたいことの説明がむずかしい

Rだと、group_by() を複数列でやって、最終的にはunique()で、単一な配列を抽出したい。

下のように、複数の列がある。同一の診療日に複数の処置をしている。もちろん患者は、架空の動物。

それを以下のように、診療日を1つだけにしたい。

Sub 解析()

  Dim myDic As Object, myKey, myItem
  Dim myVal, myVal2, myVal3
  Dim i, j As Long
                   
    Set myDic = CreateObject("Scripting.Dictionary")
    
    ' データを配列に格納
    myVal = Worksheets("シート名1").Range("A2:E80000").Value
    
    ' myVal2をmyValの列を合成して作る。
    ' myVal2をmyDicへkeyとして格納。keyは同一のものは複数登録されず、1つだけ登録される。
    
        For i = 1 To UBound(myVal, 1)
            myVal2 = myVal(i, 1) & "_" & myVal(i, 2) & "_" & myVal(i, 3) & "_" & myVal(i, 4) & "_" & myVal(i, 5)
            If Not myVal2 = "_" Then
                If Not myDic.exists(myVal2) Then
                    myDic.Add myVal2, myVal(i, 5)  'key = myVal2 , item = myVal(i,5)  
                End If
            End If
        Next
    
    ' ---Key,Itemの書き出し
    myKey = myDic.keys    'key = myVal2
    myItem = myDic.items  'item = myVal(i,5) 
    
        For i = 0 To UBound(myKey)
        
            myVal3 = Split(myKey(i), "_")  'myKeyを分割して、myVal3を作成する。
            
            Worksheets("シート名2").Cells(i + 2, 1).Value = myVal3(0)
            Worksheets("シート名2").Cells(i + 2, 2).Value = myVal3(3)
            Worksheets("シート名2").Cells(i + 2, 3).Value = myVal3(4)
        Next
    
Set myDic = Nothing       
  
End Sub

Categories:

category