投稿/コメントを表示します。

Mac版のため、Dictionaryが使えず、問題6を動的配列とFunctionを使って書いてみました。(正常動作確認済み)一応動くのですが、ここをもっとこうした方が良いとか別の方法などがあれば、アドバイス頂けないでしょうか。
Dictionaryの代替プログラムを考える度に、Dictionaryの便利さが身に染みます。。。いつもありがとうございます。(><)
enshu1の問題6
Sub mondai6()
    Dim sp() As String
    Dim cYk As Long
    Dim cTt As Long
    Dim slist() As Variant
    Dim c As Long
    Dim m As Long
    c = 0
    Dim st As String
    For cTt = 0 To 97
        sp = Split(Range("A2").Offset(cTt).Value, ",")
        For cYk = LBound(sp) To UBound(sp)
            ReDim Preserve slist(1, c)
             '一番最初は、配列に即登録
             If c = 0 Then
                slist(0, c) = sp(cYk)
                slist(1, c) = 1
                c = c + 1
             '2回目以降はFunctionで存在を判定
             Else
                st = sp(cYk)
                If isExists(slist, st) = False Then
                '名前が存在しなかったので、登録
                slist(0, c) = sp(cYk)
                slist(1, c) = 1
                c = c + 1
                Else
                '名前が存在。配列から該当の名前のslist(1,m)を探し出し、1を足す。
                    For m = LBound(slist, 2) To UBound(slist, 2)
                        If st = slist(0, m) Then
                            slist(1, m) = slist(1, m) + 1
                            Exit For
                        End If
                    Next
                    
                End If
             End If
            
        Next
   Next
    
  'リストを書き出し
  For c = LBound(slist, 2) To UBound(slist, 2)
    Range("H2").Offset(c) = slist(0, c)
    Range("I2").Offset(c) = slist(1, c)
  Next
End Sub

Function isExists(slist() As Variant, st As String) As Boolean
    Dim hantei As Boolean
    Dim rg As Variant
    hantei = False
    For Each rg In slist
        If st = rg Then
        hantei = True
        End If
    Next
    
    isExists = hantei
End Function

2020/11/07 15:02