|
▼kikan さん:
>>>(ワークシートWAREA)にコピーして
>>> 下の配列はコピー後の(ワークシートWAREA)になります。
>>> ・
>>>の様になってまして H列に種類1〜8までの種類があります。
>>>ここでラベルに
>>> ”種類1:2件”
>>> ”種類2:1件”
>>> ”種類3:1件”
>>> ”種類4:2件”
>>> ”種類5:0件”
>>> ”種類6:0件”
>>> ”種類7:0件”
>>> ”種類8:1件”
>>> と言った具合に表示させたいのですが・・?
>CountIf関数ですが、具体的にどの様な構文を書けばよろしいでしょうか?
>コマンドボタン1押して種類1をラベル1に○○個ちお表示させる構文を
>教えてください。
ラベルというのは どこにあるのでしょうか?
UserForm にあるLabelのことだとして、ステップバイステップで
下のボタン_Click()プロシージャ内に
コードを書いていただけませんか?
'ボタン名は適当に btnCountIf としてあります
Private Sub btnCountIf_Click()
'(1)AutoFilterで抽出された(ワークシートWAREA)の表範囲を _
変数r に代入してください
Dim r As Range
Set r = Worksheets("WAREA").Range("A1").CurrentRegion
'(2) (1)で得られた表範囲から 1行目の列見出し行を削除してください
Set r = Intersect(r, r.Offset(1))
'(3) (2)で得られたデータ範囲をそのうちの「H列」だけに _
限定してください
Set r = r.Columns("H").Cells
'(4)表の下の(G列に) H列をカウントするための(種類名)を _
行方向に列挙してください
Dim i As Long
Dim c As Range
Set c = r.Item(r.Count + 2, 0)
For i = 1 To 8
c.Item(i, 1).Value = "種類" & i
Next
'(5)(4)で書き出した(種類名)のとなり H列 に _
(3)で得られた範囲を対象に 種類別個数をカウント _
する数式を一括セットしてください
r.Item(r.Count + 2, 1).Resize(8).FormulaR1C1 = _
"=COUNTIF(" & r.Address(, , xlR1C1) & ",RC[-1])"
'(6)(5)でカウントした結果をラベルコントロールにコピー _
してください。
Set c = c.CurrentRegion '(4)の範囲と(5)の範囲
For i = 1 To 8
Controls("Label" & i).Caption = _
c.Item(i, 1) & " : " & c.Item(i, 2)
Next
'(7) 必要ならば COUNTIFに使った範囲をクリアしておきます。
c.ClearContents
'(8)表範囲をCSV出力するには
>「WAREA」シートを[編集]メニュー -[シートの移動またはコピー]を使って
>あたらしいBookにCopyして、そのBookを (CSV形式で)[名前をつけて保存]する
>するまでの操作をマクロ記録してください。
End Sub
|
|