- 締切済み
VBAでカテゴリ集計のやり方
下記の作業するにはどうしたらよいものでしょうか 例) A 1 B 5 7 9 C D この様なセルの状態で、 アルファベットの件数と数字の件数をカウントさせるにはどのようなコードを書けば良いのでしょうか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
まず、「セル」ということですから、常識的にExcelと解釈してよろしいのでしょうか? 「セル」は、Wordにもありますが。 今、現在、私の書いた、'ユーザー定義関数 Function funcCount() では、うまく行かないのか、それとも、まったく求めているものが違うのかさえ、分かりません。 >数値等は難しいという事ですので、 これは、良く分からないのです。 そのユーザー定義関数は、一応、該当するセルの数を数えているはずです。引数に、「0」を入れるか、「1」を入れるかによって、数字か、アルファベットかの数をかぞえ分けます。 >A1,A3,A5,A6,A10,A11のセルの数を合計させたい ですから、ユーザー定義関数で、該当するものに、カウントの1が立って、結果としては、数が出ているはずです。 最初のご質問から、どういう結果になればよろしいのですか? ご自身の仕事の支障のない程度に、より具体的に、そのデータと予定している集計結果を教えてください。 現在のお手元にあるVBAにどうつなげればよいのですか?
- Wendy02
- ベストアンサー率57% (3570/6232)
環境がわからないのでなんともいえませんが、お使いのVBAが、非Excelだとして、PCの中に、Excelが搭載されているなら、参照設定して、Excel.Applicationから、ワークシート関数を借りてきたほうが便利で速いこともありますが、アルファベットを、関数で拾い出すのは、少しややこしいです。 Sub myCount() Dim Rng As Range Dim a As Long, b As Long Set Rng = Range("A1", Range("A65536").End(xlUp)) a = funcCount(Rng, 0) b = funcCount(Rng, 1) MsgBox "数字は、 " & a & " で、" & vbCr & _ "アルファベットは、 " & b & "でした。" End Sub 'ユーザー定義関数 Function funcCount(Rng As Range, Switch As Integer) As Long Dim LikePattern As String Dim c As Object, cnt As Long If Switch = 0 Then LikePattern = "[0-9]*" '数字 Else LikePattern = "[A-z]*" 'アルファベット End If For Each c In Rng If c.Value Like LikePattern Then cnt = cnt + 1 'カウント End If Next c funcCount = cnt End Function
- bin-chan
- ベストアンサー率33% (1403/4213)
> アルファベットの件数と数字の件数をカウント 値が設定されている範囲を"A1"から"A8"と仮定します。 式[COUNTA(A1:A8)]で、値[8]が取得できます。(1) 式[COUNT(A1:A8)]で、値[4]が取得できます。(2) 数字の件数は(2)です。 アルファベットの件数は(1)-(2)です。 式[COUNTA(A1:A8)-COUNT(A1:A8)]ですね。
補足
有り難うございます。言葉足らず&知識足らずですみません。実はこの集計作業の後に集計後の数値をVBAでコピペさせるコードを用意しており、集計部分も一気に出来ればと思いまして。数値等は難しいという事ですので、例えば、A1A3A5A6A10A11のセルの数を合計させたい場合はどのようなコードになりますでしょうか。