Excel VBA質問箱 IV

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

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


5373 / 13644 ツリー ←次へ | 前へ→

【51208】条件別にカウントする方法を教えてください なかこ 07/9/3(月) 20:06 質問[未読]
【51209】Re:条件別にカウントする方法を教えてくだ... ichinose 07/9/3(月) 20:28 発言[未読]
【51210】Re:条件別にカウントする方法を教えてくだ... なかこ 07/9/3(月) 20:57 発言[未読]
【51211】Re:条件別にカウントする方法を教えてくだ... ichinose 07/9/3(月) 21:47 発言[未読]
【51212】Re:条件別にカウントする方法を教えてくだ... なかこ 07/9/3(月) 22:02 お礼[未読]

【51208】条件別にカウントする方法を教えてくださ...
質問  なかこ  - 07/9/3(月) 20:06 -

引用なし
パスワード
   こんばんは。
高度な質問の中、初心者の質問で恐縮しますが
どうぞ宜しくお願い致します。

sheet1
A列 B列
1  ○
3
4  ○
5
3  ×
2
1
1  ○
1  ×
1
2
2


下記は表になっています(F1:G5)

F1に1の個数→ここでは5が入力される
F2に2の個数→ここでは3が入力される
F3に3の個数→ここでは2が入力される
F4に4の個数→ここでは1が入力される
F5に5の個数→ここでは1が入力される

また
G1にはF1でカウントされた5つの1のうち
○が付いているものだけをカウントし、入力。
→ここでは2が入力される。

G2にはF2でカウントされた3つのなかには
○のついているものはないので0を入力。

G3,G4,G5にもF3,F4,F5それぞれ対応させ、
○の数をカウントし、その数字を入力。
結果、G3には0、G4には1、G5には0が入力される。

A列には1〜5の数字が入っており、それぞれ何個づつあるかカウントする。
また○のついているものが”1〜5の数字別”に何個づつあるかカウントしたいのですが
count関数をうまく使うことができません。

宜しくお願い致します。

【51209】Re:条件別にカウントする方法を教えてく...
発言  ichinose  - 07/9/3(月) 20:28 -

引用なし
パスワード
   ▼なかこ さん:
こんばんは。

>sheet1
>A列 B列
>1  ○
>3
>4  ○
>5
>3  ×
>2
>1
>1  ○
>1  ×
>1
>2
>2
>
>
>下記は表になっています(F1:G5)
>
>F1に1の個数→ここでは5が入力される
>F2に2の個数→ここでは3が入力される
>F3に3の個数→ここでは2が入力される
>F4に4の個数→ここでは1が入力される
>F5に5の個数→ここでは1が入力される
>
>また
>G1にはF1でカウントされた5つの1のうち
>○が付いているものだけをカウントし、入力。
>→ここでは2が入力される。
>
>G2にはF2でカウントされた3つのなかには
>○のついているものはないので0を入力。
>
>G3,G4,G5にもF3,F4,F5それぞれ対応させ、
>○の数をカウントし、その数字を入力。
>結果、G3には0、G4には1、G5には0が入力される。
>
>A列には1〜5の数字が入っており、それぞれ何個づつあるかカウントする。
>また○のついているものが”1〜5の数字別”に何個づつあるかカウントしたいのですが
>count関数をうまく使うことができません。
F列は、Countif関数、G列はSumproduct関数を使うとできそうですね!!

セルF1には、

「=COUNTIF(OFFSET($A$1,0,0,COUNT($A:$A),1),ROW())」(両端の「」は除く)

セルG1には、

「=SUMPRODUCT((OFFSET($A$1,0,0,COUNT($A:$A),1)=ROW())*(OFFSET($A$1,0,1,COUNT($A:$A),1)="○"))」 (両端の「」は除く)

と入力して、それぞれF5、G5までオートフィル操作を行って下さい。

これで出来ると思います。

ということでVBAではなく、数式で可能です。

【51210】Re:条件別にカウントする方法を教えてく...
発言  なかこ  - 07/9/3(月) 20:57 -

引用なし
パスワード
   ▼ichinose さん:

こんばんは。
早速のお答えありがとうございます。

>>count関数をうまく使うことができません。
これを書いたので誤解があったのかもしれません。
すみません。

このタイミングでカウントしたい!というのがあるので
マクロボタンを作成して、組んでいました。

よろしければ
VBAで教えていただきたいです。
宜しくお願い致します。

【51211】Re:条件別にカウントする方法を教えてく...
発言  ichinose  - 07/9/3(月) 21:47 -

引用なし
パスワード
   >
>>>count関数をうまく使うことができません。
>これを書いたので誤解があったのかもしれません。
>すみません。
>
>このタイミングでカウントしたい!というのがあるので
>マクロボタンを作成して、組んでいました。
>
>よろしければ
>VBAで教えていただきたいです。
前回の投稿の数式入力操作をマクロの記録で実行すれば、土台はは
作ってくれますけどね!!

標準モジュールに

'===============================================================
Sub main()
  Dim rng As Range
  Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
  With Range("f1:g5")
    .Formula = Array( _
         "=COUNTIF(" & rng.Address & ",ROW())", _
         "=SUMPRODUCT((" & rng.Address & "=ROW())*(" & _
         rng.Offset(0, 1).Address & "=""○""))")
    .Value = .Value
    End With
End Sub

VBAで行ってもほぼ同じですよ!!
セルF1からG5に数式を入れます。
出た結果を値に変換することだけ追加しました。

【51212】Re:条件別にカウントする方法を教えてく...
お礼  なかこ  - 07/9/3(月) 22:02 -

引用なし
パスワード
   ▼ichinose さん:

ご丁寧にありがとうございました。
数式をいれたらマクロ記録でもできるんですね。
恥ずかしながら思い浮かびませんでした。。
勉強になりました。


>前回の投稿の数式入力操作をマクロの記録で実行すれば、土台はは
>作ってくれますけどね!!
>
>標準モジュールに
>
>'===============================================================
>Sub main()
>  Dim rng As Range
>  Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
>  With Range("f1:g5")
>    .Formula = Array( _
>         "=COUNTIF(" & rng.Address & ",ROW())", _
>         "=SUMPRODUCT((" & rng.Address & "=ROW())*(" & _
>         rng.Offset(0, 1).Address & "=""○""))")
>    .Value = .Value
>    End With
>End Sub
>
>VBAで行ってもほぼ同じですよ!!
>セルF1からG5に数式を入れます。
>出た結果を値に変換することだけ追加しました。

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