Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


23933 / 76732 ←次へ | 前へ→

【58154】Re:名前をカウントするには
回答  にぃ  - 08/10/6(月) 17:08 -

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

0 hits

【58140】名前をカウントするには nao 08/10/6(月) 9:41 質問
【58141】Re:名前をカウントするには マクロマン 08/10/6(月) 10:22 発言
【58144】Re:名前をカウントするには nao 08/10/6(月) 12:40 発言
【58147】Re:名前をカウントするには neptune 08/10/6(月) 14:12 回答
【58154】Re:名前をカウントするには にぃ 08/10/6(月) 17:08 回答
【58155】Re:名前をカウントするには にぃ 08/10/6(月) 17:46 発言

23933 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free