| 
    
     |  | ▼nao さん: >名前が重複する場合は
 >2回目以降に出てきた名前はカウントしない条件にしようと思います
 
 はじめまして、こんにちは。
 
 サンプルコードです。
 たぶんこれで重複した場合でもできると思います^^;
 
 Sub Sample()
 Dim Dic, Keys
 Dim i As Long
 Dim J, E As Integer 'Jが日本人、Eが外人です
 Dim buf As String
 
 '重複以外を取得します
 Set Dic = CreateObject("Scripting.Dictionary")
 
 For i = 1 To 100
 
 buf = Cells(i, 1).Value
 
 If Not Dic.Exists(buf) Then
 Dic.Add buf, buf
 End If
 
 Next i
 
 'Keysメソッドから名前を出せるので、日本語か英語か判断します
 Keys = Dic.Keys
 
 J = 0
 E = 0
 
 For i = 0 To Dic.Count - 1
 
 If Not Keys(i) = "" Then '空白のときは飛ばします
 
 If Asc(Keys(i)) < 0 Then
 J = J + 1
 Else
 E = E + 1
 End If
 
 End If
 
 Next i
 
 MsgBox "日本人の数は" & J & "人です"
 
 MsgBox "外人の数は" & E & "人です"
 
 Set Dic = Nothing
 
 End Sub
 
 途中、If Asc(Keys(i)) < 0 Then のコードで判断しているのですが
 Asc("A1")の機能で、()内の頭の文字コードを返しています。
 
 「日本語」ならマイナスの特定の数字を返し、「英語」ならプラスの特定の
 数字を返すらしいです。
 ちなみに「数字」だとプラスの数字を返しますので、指定内に「数字」が
 入っていると外人の人数が増加してしまいます。
 
 ここではサンプルとしてA1からA100までを取得していますので
 お好みでセル位置を変えてください^^;
 
 |  |