|
▼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までを取得していますので
お好みでセル位置を変えてください^^;
|
|