- ベストアンサー
エクセルの関数でA店の個数を数える方法
- エクセルの関数を使用して、シート1のA店の個数を数える方法について説明します。
- シート1にはA1からA200までにランダムにA店~C店の文字が入っており、B列には0~300までのランダムな数字が入っています。
- シート2にはA1に「店名」、B2に「0~30」、C2に「31~50」、D2に「50~300」の文字を入れ、シート2のB2には、シート1のA店のB列の0~200までのセルの個数を数える関数を入れます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>シート2のA1には「店名」という文字。B2には 0~30 C2には 31~50 D2には50~300という文字が入っています・ の部分は 「シート2のA1には「店名」という文字。B1には 0~30 C1には 31~50 D1には50~300という文字が入っています・」 の間違いではないでしょうか? もし、そうであれば、レイアウトを変更しなくとも良い方法も御座います。 【ExcelのバージョンがExcel2007以降の場合】 Sheet2のB2セルに次の関数を入力してから、Sheet2のB2セルをコピーして、Sheet2のB2~D4の範囲に貼り付けて下さい。 =COUNTIFS(Sheet1!$A$2:$A$200,$A2,Sheet1!$B$2:$B$200,">="&RIGHT(B$1,FIND("~",B$1)-1),Sheet1!$B$2:$B$200,"<="&REPLACE(B$1,1,FIND("~",B$1),)) 【ExcelのバージョンがExcel2007よりも前の場合】 Sheet2のB2セルに次の関数を入力してから、Sheet2のB2セルをコピーして、Sheet2のB2~D4の範囲に貼り付けて下さい。 =SUMPRODUCT((Sheet1!$A$2:$A$200=$A2)*(Sheet1!$B$2:$B$200>=RIGHT(B$1,FIND("~",B$1)-1)+0)*(Sheet1!$B$2:$B$200<=REPLACE(B$1,1,FIND("~",B$1),)+0))
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
ANo.4です。 申し訳御座いません、ANo.4の回答に挙げた関数には誤りが御座いました。 正しくは以下の通りです。 【ExcelのバージョンがExcel2007以降の場合】 Sheet2のB2セルに次の関数を入力してから、Sheet2のB2セルをコピーして、Sheet2のB2~D4の範囲に貼り付けて下さい。 =COUNTIFS(Sheet1!$A$2:$A$200,$A2,Sheet1!$B$2:$B$200,">="&LEFT(B$1,FIND("~",B$1)-1),Sheet1!$B$2:$B$200,"<="&REPLACE(B$1,1,FIND("~",B$1),)) 【ExcelのバージョンがExcel2007よりも前の場合】 Sheet2のB2セルに次の関数を入力してから、Sheet2のB2セルをコピーして、Sheet2のB2~D4の範囲に貼り付けて下さい。 =SUMPRODUCT((Sheet1!$A$2:$A$200=$A2)*(Sheet1!$B$2:$B$200>=LEFT(B$1,FIND("~",B$1)-1)+0)*(Sheet1!$B$2:$B$200<=REPLACE(B$1,1,FIND("~",B$1),)+0))
- kagakusuki
- ベストアンサー率51% (2610/5101)
Sheet2のレイアウトを少々変更して、Sheet2のA1セルには「店名」という文字、A2セルには「A店」、A3セルには「B店」、A4セルには「C店」、B1セルには「0」、B3セルには「30」、C1セルには「31」、C3セルには「50」、D1セルには「51」、D3セルには「300」、B2~D2には縦書きで「~」と入力して下さい。 【ExcelのバージョンがExcel2007以降の場合】 Sheet2のB4セルに次の関数を入力してから、Sheet2のB4セルをコピーして、Sheet2のB4~D6の範囲に貼り付けて下さい。 =COUNTIFS(Sheet1!$A$2:$A$200,$A4,Sheet1!$B$2:$B$200,">="&B$1,Sheet1!$B$2:$B$200,"<="&B$3) 【ExcelのバージョンがExcel2007よりも前の場合】 Sheet2のB4セルに次の関数を入力してから、Sheet2のB4セルをコピーして、Sheet2のB4~D6の範囲に貼り付けて下さい。 =SUMPRODUCT((Sheet1!$A$2:$A$200=$A4)*(Sheet1!$B$2:$B$200>=B$1)*(Sheet1!$B$2:$B$200<=B$3))
- bin-chan
- ベストアンサー率33% (1403/4213)
Sheet1のC列を使っても良いですか? また結果はピボットテーブルで得るので、Sheet2以外になるかも。 列Bの値は必ず0~300の範囲をとり、かつ入力されているとします。 1)Sheet1のセルC1に、見出し[ランク]を設定。 2)セルC2に以下の式を設定。長いので折り返してるかも?ですが、 [ から ]までを一行でコピペしてください。 [=if(and(0<=b2, b2<=30),"0~30", if(and(30<b2, b2<=50),"31~50", "50~300"))] 3)式設定できたら、セルB2を囲む黒い太枠の右下隅が■になってるのでダブルクリック。 4)セルA1をクリックして、Ctrl+Shif+Endキーを押下。 5)ピボットテーブルを起動し、行見出しに[店名]、列見出しに[ランク]、集計項目はそのまま(デフォルトは件数)で実行。
- tom04
- ベストアンサー率49% (2537/5117)