• ベストアンサー

excel 関数をON、OFFさせる方法

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

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 要するに、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="●"))

yap3
質問者

お礼

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

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! >関数を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

yap3
質問者

お礼

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

yap3
質問者

補足

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

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 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の範囲に貼り付けて下さい。

yap3
質問者

お礼

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

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.2

Excelの計算は通常「自動」に設定されていますが、「計算方法」を「手動」に設定しておいて、 「再計算」する時は「F9」キーのショートカットキーを押すことで計算させることが出来ます。  計算時はここに注意 これで「Excel 2007」で仕事がはかどる!  http://ascii.jp/elem/000/000/200/200639/index-2.html

yap3
質問者

お礼

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

回答No.1

=COUNTIF(B2:B3,"A") を =IF(ISBLANK(F9),"",COUNTIF(B2:B3,"A")) にすると、F9に何か入れないと空白になる。

yap3
質問者

お礼

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

yap3
質問者

補足

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

関連するQ&A