• ベストアンサー
  • 暇なときにでも

エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい

エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい 実は先に同様の質問をしてご回答を頂きましたが、やりたかったことがうまく質問できていなかったので再度質問させていただきます。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のホールで、4で上がった数(パーを取った個数)を集計する方法が分かりません。同様に、Parが4のホールで、3(バーディ)を取った数(個数)も集計したいのです。countif関数ではpar4のホールの数を数えることができますが、その中でパーやバーディやボギーで上がった個数をそれぞれ取りたいのです。 DCOUNTでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数8
  • 閲覧数1249
  • ありがとう数9

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

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

No.2です! たびたびごめんなさい。 前回の方法は単純にEagle~DoubleBogeyのホールが何ホールあるか? という方法だったので的外れだと思います。 もう一度画像をアップしてみます。 今回はB7セルにParの数値を入力すればC7セルに18ホールの中で何ホールあるか? そして、B8~B10セルはBirdie~Bogeyのホールが何ホールあるか? という感じで表示させています。 C7セルは =COUNTIF(B2:S2,B7) B8セルは =SUMPRODUCT(($B$2:$S$2=$B$7)*($B$4:$S$4=ROW(A1)-2)) という数式を入れ、オートフィルで下へコピーしています。 どうも何度も失礼しました。 今回も外していたらごめんなさいね。m(__)m

共感・感謝の気持ちを伝えよう!

質問者からのお礼

何度もご丁寧にありがとうございました。この回答を読まずに先の回答に中途半端なお礼をしてしまいました。失礼いたしました。SUMPRODUCTを使うというのが、この作業で必要だと言うことがよくわかりました。ありがとうございました。

関連するQ&A

  • エクセルのデータベース関数を教えてください。

    エクセルのデータベース関数を教えてください。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のスコアだけを集計する方法が分かりません。 DSUMでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

  • DCOUNT関数とDCOUNTA関数の違い

    DCOUNT関数とDCOUNTA関数の内容の違いがよくわかりません。前者が「数値の個数」で後者が「データの個数」であることは、わかります。 しかし、実際にやってみるとどちらを使えばよいのかわからなくなってきます。使用する何を基準にすればよいのでしょうか?

  • EXCEL関数でセルの数値の個数を求めたい

    以下のように各セルに入力されている場合に各セルに含まれる "," を除いた数字の個数の合計を求めたいのですが、どのようにすればできるでしょうか。 以下の場合ですと、 1行目 3個 2行目 2個 3行目 3個 で、8個という結果を得たいです。 LEN(substitute(A1,",","")) や (LEN(A1)+1)/2 などで一つ一つのセルに含まれる数値の個数は出せますが、列全体の個数の合計を求めたいです。 ---- 列A 行1-> 3,6,9 行2-> 2,5 行3-> 2,8,11 ※入力規則として、数値を","で区切ります。 ※列を追加して上の関数を各行に設定した上で合計を出す方法以外で。

その他の回答 (7)

  • 回答No.8
noname#204879

》 自分で考える能力が無いものですみません 質問丸投げは歓迎されませんが・・・ チッタぁ、自分の出来るところまでは書いた方が・・・    A  B C D E F … S T  U  V  W 1 Par  4 4 3 5 4 … 4   Bir Par Bog 2 Ryo  5 4 5 4 4 … 5    1  4  5 3 Woods 4 4 3 3 4 … 5    2  5  3 4 Ai   3 4 4 3 3 … 5    7  1  2 U2: =SUMPRODUCT(($B$1:$S$1=4)*($B2:$S2=COLUMN(C2)))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

SUMPRODUCTという関数が、自分では見いだせませんでした。さんざん悩んだんですけどね。皆さんの回答でよく分かりました。ありがとうございました。

  • 回答No.7

パー(パーとスコアが同じ) =SUMPRODUCT((B1:F1=B2:F2)*1) バーディ(パーよりスコアが小さい) =SUMPRODUCT((B1:F1>B2:F2)*1) ボギー(パーよりスコアが1大きい) =SUMPRODUCT((B1:F1=B2:F2+1)*1) ダブルボギー(パーよりスコアが2大きい) =SUMPRODUCT((B1:F1=B2:F2+2)*1) 大たたき(パーより2以上大きい) =SUMPRODUCT((B1:F1<B2:F2+2)*1) こんな感じでどうでしょう?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

SUMPRODUCTという関数が、自分では見いだせませんでした。皆さんの回答でよく分かりました。本当にありがとうございました

  • 回答No.5
  • okormazd
  • ベストアンサー率50% (1224/2411)

B5に =SUMPRODUCT(($B$1:$J$1=B$4)*($B$2:$J$2=$A5)) で、後はフィル。 添付図のとおり。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

SUMPRODUCTという関数が、自分では見いだせませんでした。皆さんの回答でよく分かりました。本当にありがとうございました。

  • 回答No.4
  • Cupper
  • ベストアンサー率32% (2123/6444)

初心者さんと言うことですので、基本的なお話からしましょう >このデータの行と列を入れ替えるという作業は避けたいのです。 これが大間違いなんです Excelなど表計算のデータは横に項目を並べて、縦にデータを並べるようにできています 質問のようにどうしても縦と横の関係を逆にする必要がある場合は  TRANSPOSE関数(配列関数) を使って別に表を作り直したりします このように、見た目のシートと計算用のシートを別にすることで解決することがありますので そういった方法を使うなどしてください (これは自身で考えてください。でないと作業依頼の投稿になりますよ) ■本題 それでも基本のアドバイス  「ピボットテーブル」 を使ってみてください  http://www11.plala.or.jp/koma_Excel/pivot_menu.html などのサイトを参考にするか、書店で解説書を購入して手元に置きながら作業をすると良いでしょう (解説書は初心者さんには必須アイテムですので、自身の使い方にあったものを自身の目で選ぶことをお奨めします)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。ご指摘、真摯に受け止めます。ピボットテーブルは理解して使っておりますが、別の方法と思って質問しました。ドンピシャの回答をもらえましたので、納得しております。ありがとうございました。

  • 回答No.3
  • mshr1962
  • ベストアンサー率39% (7417/18947)

DSUM,DCOUNT等のデータベース関数は1行目が項目名で2行目以降がデータの場合しか使えません。 現行の表記の場合は使用はあきらめてください。 代替の関数ですが、 ■EXCEL2007の場合 バーディー=COUNTIFS(B1:S1,4,B2:S2,3) パー=COUNTIFS(B1:S1,4,B2:S2,4) ボギー=COUNTIFS(B1:S1,4,B2:S2,5) ■EXCEL2007以前の場合 バーディー=SUMPRODUCT((B1:S1=4)*(B2:S2=3)) パー=SUMPRODUCT((B1:S1=4)*(B2:S2=4)) ボギー=SUMPRODUCT((B1:S1=4)*(B2:S2=5))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

No.1の方と同じ回答ですよね。SUMPRODUCTはエクセルのHelpで検索しても分かりませんでした。教えていただいた後でも、その結果が導かれる理由がまだ分かりません。奥が深いですね。ありがとうございました。

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

こんばんは! 参考になるかどうか判りませんが・・・ 一気に結果を求める方法ではありません。 ↓の画像のようにScoreの一つ下に作業用の行を設けています。 作業行B4セルは =B3-B2 として18番ホールまでオートフィルで列方向へコピーします。 そして、結果が知りたいC7セルに =COUNTIF($B$4:$S$4,B7) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 尚、B7~B12の数値はあらかじめ入力しておきます。 単純にホール数だけ集計していますので、 何番ホールがどういう結果だったか?というのは作業用の行で判断するしかないと思います。 以上、参考になれば幸いですが、 他に良い方法があったり、的外れだったら 読み流してくださいね。m(__)m

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。ご丁寧に画像も付けていただき恐縮ですが、これだと、全体でパーやバーディの数は分かっても、パー4での数、パー3での数というのが分かりませんよね。私はそこを悩んでおりました。他の方の回答で解決しましたので、質問を締めさせていただきます。ありがとうございました。

  • 回答No.1

こんな方法はどうでしょうか。 1,2行目、A列からR列にデータがあるものとして パー =SUMPRODUCT(($A$1:$R$1=4)*($A$2:$R$2=$A$1:$R$1)) ボギー =SUMPRODUCT(($A$1:$R$1=4)*($A$2:$R$2=$A$1:$R$1+1)) バーディー =SUMPRODUCT(($A$1:$R$1=4)*($A$2:$R$2=$A$1:$R$1-1)) なお、式中の数字を変えればいろいろ対応できます。 関数式はこの画面からEXCELへコピー貼付できます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

完璧な回答をいただきました。SUMPRODUCTという関数を自分では見つけ出すことができませんでした。本当にありがとうございました。ベストアンサーにさせていただけなかったのが残念です。申しわけありません。

関連するQ&A

  • DCOUNT関数で空白セルであることを条件にしたい

    DCOUNT関数についての質問です。 スプレッドシートでDCOUNT関数を使用していますが、条件設定で、「セルが空白の場合」の設定ができません。COUNTIFでできるような「""」や「"="」にしたりと試してみましたができませんでした。 具体的には、以下のように、3つある条件のうちの1つが「セルが空白の場合」で、それら3つの条件全てを満たすものの数を数えたいです。 初歩的な質問で恐縮ですが、「セルが空白」を条件とする書き方を教えていただきたいです。よろしくお願いします。 なお、DCOUNT関数はスプレッドシートでもExcelでも使用できるので、カテゴリはExcelにしています。 <やりたいこと> 以下の3つの条件を全て満たす数値の数をカウントする 条件1 性別が男性 条件2 年齢が40以上 条件3 既往歴なし(セルが空白) <データベース(実際のデータ数はもっとあります>    A   B   C   D   E   F   G 1  氏名  住所  年齢 性別  身長  体重  既往歴 2  山田  東京  42  男性  168   72 3  武田  静岡  54  男性  171   81  脳卒中 4  田中  和歌山 24  女性  159   54 <条件>    I   J   K 1  性別  年齢 既往歴 2  男性  >=40 【ここをどう書けばよいか】 <数式> =DCOUNT(A1:G4,C1,I1:K2)

  • エクセルの関数に関する質問です

    エクセルで 1行目に数字4つ(1列に数字1つずつ)と 2行目に数字4つ入力した際、 1行目と2行目で重複していない数字を それぞれの行の5列目以降に表示させるには どのような関数にすれば良いでしょうか? 具体的に何がしたいというと 例えば 2 4 5 6 3 5 4 7 と入力した場合 2 4 5 6 3 7 3 5 4 7 2 6 と表示させたいのです。 どうぞよろしくお願いします。

  • EXCELのVBAでDcount関数がうまく動きません。

    EXCELのVBAでDcount関数を使おうとして、下記コードを作成しましたが、Dcount関数の部分が期待どおり動かず、該当なしとして、0を返してきます。 デバックで途中でマクロを止めて(Dcount関数の前)、セルに直接Dcount関数を入力すると、期待どおりの値を返してきます。 Dcount関数の記述の何が問題なのか、ご教示いただければ幸いです。 Sub 期間集計() Dim myrow, Krow As Double Dim First, Last As Date Dim i, Count As Integer Dim Data As Integer Dim Keria As String 'Worksheets("期間別").Activate Worksheets("期間別").Range("A1:BB65536").Delete Worksheets("入力").Activate With Worksheets("入力") '入力表の最終行の行数をmyrowに代入 myrow = .Range("A65536").End(xlUp).Offset(1).Row '出力前に入力データを日付順にソート .Range("A3").Sort _ Key1:=.Columns("A"), _ Header:=xlGuess First = Worksheets("集計").Range("G3") Last = Worksheets("集計").Range("H3") .Range("BH3:BH5").ClearContents .Range("BH3") = "日付" .Range("bi3") = "日付" .Range("BH4") = ">=" & First .Range("BI4") = "<=" & Last .Range(.Cells(2, 1), Cells(myrow, 47)).AdvancedFilter Action:=xlFilterCopy, _ Criteriarange:=.Range("BH3:BI4"), Copytorange:=Worksheets("期間別").Range("C11"), Unique:=False Krow = Worksheets("期間別").Range("C65536").End(xlUp).Row Keria = "C11:" & "AW" & Krow End With Worksheets("集計").Activate With Worksheets("集計") .Range(.Cells(13, 10), .Cells(24, 10)).ClearContents For i = 1 To 12 Count = 12 + i .Range(.Cells(Count, 16), .Cells(Count, 61)).Copy .Range(.Cells(11, 16), .Cells(11, 61)).PasteSpecial Paste:=xlValues .Range(.Cells(10, 16), .Cells(11, 61)).Copy With Worksheets("期間別") .Range(.Cells(11, 53), .Cells(12, 98)).PasteSpecial Paste:=xlValues Data = WorksheetFunction.DCount(.Range(Keria), .Range("C11"), .Range("BA11:CT12")) End With .Cells(Count, 10) = Data Next i End With

  • 条件を満たすデータの個数を求めるについて

    EXCEL2000を利用しています。 条件を満たすデータの個数を求める関数で、列方向(縦方向)に対しては、DCOUNT及びDCOUNTAを利用できるのは、分かったのですが、行方向(横方向)についての関数が分かりません。 参考までに求めたいところを『?』で表現しました。 ちょっと分かりづらいかも知れませんが、宜しくお願いします。

  • DCOUNT関数がなぜかカウントしない

    DCOUNT関数を使って顧客のデータから来店回数を抽出しようとしているのですが、エラーは出ないのですが、なぜかどの客も来店回数が0なのです。 顧客データがにはちゃんと来店日、売上などがかいていあるのですけど… DCOUNT関数のdatabaseに顧客の全データ(顧客の来店などのデーターを含む)のシート全体を指定して、フィールドに「ID番号」(顧客の)の列を指定して、クリテリアには集計するID番号の顧客ID番号を入力しています。 数字は出てくるんですが、どの顧客も来店回数0です。 エクセル2000を使っています。 なぜ、うまく計算されないのかさっぱり分かりません。 よろしくお願いします。

  • Excelで特定の文字のある列の数値を合計する関数

    Excelで、特定の文字列を含む列の数値の合計を、自動で集計してくれる関数はあるでしょうか。 複数シート(シートA、シートB)で構成されるExcelファイルで、シートAにはすべての取扱い商品が記載されています。現在は、シートBに入力されている商品ごとの販売個数の合計をシートB上でsumにより求め、その数値をシートAの該当箇所に、手で入力しています。シートAに記載されている商品が多いため、この手作業を関数で代替したいのです。 ただし、シートBに、次のような条件があります。 シートBの1行目(A1,B1,C1,D1...)には、見出しとして"氏名" "りんご" "バナナ" "いちご"...などがあり、2行目以降は、販売者の名前と、その人が販売した商品の個数が入力されています。掲載人数は40人(行数で41行)ほどです。 ところが、誰も"りんご"を販売していなければ、その列自体がなくなります。シートBには販売された商品しか記載されておらず、たとえばB1は、必ずしも"りんご"ではありません。 シートAからBを参照し、シートBの1行目に、もし"りんご"の文字があれば、そのりんごの列の2行目以降にある販売数の合計を、"バナナ"があれば同じくバナナの販売数の合計を、じかにシートAのそれぞれの合計欄に表示させたいのです。 なお、シートBの行と列を入れ換えたシートB'を作るのは、避けたいと思っています。理由は、販売者の名前でも、全商品の販売個数をシートAにsumif関数で集計していること。また、シートは1週間ごとに、今後30枚程度まで増え、その各週合計もシートAに集計する予定のため、シートは各週1枚だけにしたいのです。 このような条件のもと、Excelの関数で集計する方法があれば、教えてくださいますか。

  • エクセル関数で年月日を求める関数について質問です。

    エクセル関数で年月日を求める関数について質問です。 1行目に月、2行目に日をする際、1行目の月を変えるだけでその月の日数を2行目にオートフィルコピーで簡単に入力する関数を教えて下さい。

  • エクセルで10分ごとの売り上げ個数を集計したいと思っています。

    エクセルで10分ごとの売り上げ個数を集計したいと思っています。 データは次のような感じです。 15:13 2 15:15 1 15:15 2 15:17 1 15:19 4 営業時間内の売り上げがあった時間と、そのときの販売個数がお客さんごとに記録されているのですが、このデータを使って10分ごとの客数と販売個数を集計したいと思っています。どのような関数を使えばいいのでしょうか? 上記の5つのデータだと 15:10~15:20の客数(データ数)は5、販売個数は10(2+1+2+1+4)というのを出したいです。 わかる方いたらお教えいただけないでしょうか?

  • 条件のあう数値の個数を種類別に数える関数について

    下の表1からR1の1の個数、R1の2の個数、・・・を表2に示したいです。 今考えていることは、表2のセルB2に、 "(例えば表2のセルA2の)R1"とおなじデータが表示されている(表1のA1:E16の範囲の)セルの列の2行目から16行目の"(例えば)1"の個数を調べる関数 をいれたらいいのでは?と考えています。 でも、その関数の組合せがわかりません。 あるいは、他に良い方法がありますか?教えてください。 よろしくお願いします。 (表1と表2を添付しました。)

  • DCOUNT以外での集計方法

    こんにちは。 Excel関数についての質問です。 下記データおよび条件において、Dcount関数を 用いれば解決することはわかったのですが、 出来れば検索条件などを別表に出さずに抽出したいと 考えています。 もしご存知の方がおられましたらご教授頂けますでしょうか。 宜しくお願い致します。 ■抽出する表  -------------------  条件1 条件2  -------------------   0 3月10日   1 2月10日   2 3月5日   0 4月5日   0   ※上記のようなデータが100件程度 ■抽出条件  条件1が0かつ条件2に日付が入っていること ■補足1  Dcount関数以外では、各行ごとに判定分を入れてその結果を  集計するというやり方もありますが、上記表以外のセルは  使用しない方法を考えています。 ■補足2  Dcount時の条件  -------------------  条件1 条件2  -------------------   0 <>""