プロが教える店舗&オフィスのセキュリティ対策術

現在、図のような表でA、B、Cの数を「COUNTIF(B2:B3,"A")」の関数でカウントしているのですが、これを例えば図の一番右のセルに何かの文字を入力した時にだけその列のA、B、Cをカウントさせる事は可能なのでしょうか?
その列だけ「COUNTIF(B2:B3,"A")」の関数をONに出来る様なスイッチ役のセルが作れればと思っているのですがどなたか良い方法をお教え頂けたらと思います。
よろしくお願いします。

「excel 関数をON、OFFさせる方法」の質問画像

A 回答 (5件)

 要するに、F列に「●」が入力されていて、且つ、B列に「C」が入力されている、という条件を満たしている行数を求める、といった事をされたいのですね?



 もし、質問者様が御使いになられているExcelのバージョンがExcel2007以降である場合には、その目的に合った関数としてCOUNTIFS関数(COUNTIF関数ではありません)があります。
 例えば、2行目~6行目の範囲内で、F列に「●」が入力されていて、且つ、B列に「C」が入力されている、という条件を満たしている行数を求める場合には、次の様になります。

=COUNTIFS(B2:B6,"C",F2:F6,"●")


 尚、もし、質問者様が御使いになられているExcelのバージョンがExcel2007よりも前のバージョンである場合には、SUMPRODUCT関数を使えば同様の事が可能となりますが、SUMPRODUCT関数は計算処理に要するパソコンの計算負荷が大きく、データ数が数千行程度にもなる場合には、計算が終了するまでに何分もかかってしまう場合があります。(1000行程度までなら、それ程時間はかからないようですが)

=SUMPRODUCT((B2:B6="C")*(F2:F6="●"))
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。
お返事、お礼が遅れまして申し訳ございません。
上記の方法で出来ました!
表がもっと大きいので、実際に入力して試してみたいと思います。

お礼日時:2012/11/27 12:28

こんばんは!


>関数をONに出来る様なスイッチ役のセルが作れればと・・・

とありますので、一案です。
F列をダブルクリックではどうでしょうか?

実際のデータはもっと多いと思いますが、
↓の画像の通りの配置だとします。

画面左下の表があるSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてF列をダブルクリックしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から
If Application.Intersect(Target, Range("F2:F6")) Is Nothing Then Exit Sub
Dim i As Long
Dim j As Long
Dim k As Long
Dim myArea As Range
Set myArea = Range("B9:E11")
i = Target.Row

Cancel = True
myArea.ClearContents
If Target <> "" Then
j = WorksheetFunction.Match(Target, Rows(8), False)
For k = 9 To Cells(Rows.Count, 1).End(xlUp).Row
With Cells(k, j - 1)
.Value = WorksheetFunction.CountIf(Range(Cells(2, j - 1), Cells(6, j - 1)), Cells(k, 1))
.Offset(, 1) = WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 5)), Cells(k, 1))
End With
Next k
End If
End Sub 'この行まで

※ 空白セルをダブルクリックするとB9~E11のデータが消えるだけです。m(_ _)m
「excel 関数をON、OFFさせる方法」の回答画像5

この回答への補足

評価の方、誤ってしまいました。
5です。大変申し訳ございません・・・

補足日時:2012/11/27 12:57
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。
これがVBEというやつなのですね、凄いですね!
こんな凄い方法もあるのですね。
●をダブルクリックしたら表が出てきました!
しかし▲をダブルクリックしたら甲列の方が消えてしまいました・・実際の表は甲の列も乙の列も全て残しておくので今回は参考にさせて頂きますね。
この説明不足の中からこんなにすごい計算式を出して頂き感動です!
説明不足とお返事、お礼が遅れまして大変申し訳ありませんでした。
本当にどうもありがとうございました!

お礼日時:2012/11/27 12:54

 ANo.3です。


 もし、添付画像の通りにされるのでしたら、まず、B10セルに次の関数を入力して下さい。

=COUNTIF(B$2:B$6,$A10)


 次に、C10セルに次の関数を入力して下さい。

【Excel2007以降のバージョンの場合】

=COUNTIFS(B$2:B$6,$A10,$F$2:$F$6,C$9)


【Excel2007よりも前のバージョンの場合】

=SUMPRODUCT((B$2:B$6=$A10)*($F$2:$F$6=C$9))

 そして、B10~C10の範囲をまとめてコピーして、B10~E12の範囲に貼り付けて下さい。
    • good
    • 1
この回答へのお礼

再度ご回答どうもありがとうございました。
こんな方法も出来るのですね。勉強になります。
私が使っているのはExcel2000と2002でした。
少ない情報と私の説明不足の中から丁寧に答えてくださりありがとうございました。

お礼日時:2012/11/27 12:32

Excelの計算は通常「自動」に設定されていますが、「計算方法」を「手動」に設定しておいて、


「再計算」する時は「F9」キーのショートカットキーを押すことで計算させることが出来ます。

 計算時はここに注意 これで「Excel 2007」で仕事がはかどる!
 http://ascii.jp/elem/000/000/200/200639/index-2. …
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます!
そういう事も出来るのですね、勉強になります。
計算式がわかったら使ってみようと思います。
お礼が遅れましてすみません。

お礼日時:2012/11/20 18:02

=COUNTIF(B2:B3,"A")





=IF(ISBLANK(F9),"",COUNTIF(B2:B3,"A"))

にすると、F9に何か入れないと空白になる。

この回答への補足

全くの説明不足ですみません。
F列の記号は何行目にあるかと決まっているわけではなく、付ける時々によって違う行につき、その上、甲なら●、乙なら▲と区別しているので、それぞれ別にカウント出来るでしょうか?

補足日時:2012/11/20 17:59
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
参考にさせて頂きます。
お礼が遅れましてすみません。

お礼日時:2012/11/20 17:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!