- ベストアンサー
【Excel2003】件数を抜き出す方法について
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 とりあえず1000行目までデータがあっても対応できる数式です。 H2セルは =SUMPRODUCT(($C$2:$C$1000=G2)*($D$2:$D$1000<>0)) I2セルは =SUMIF($C$2:$C$1000,G2,$D$2:$D$1000) J2セルは =SUMPRODUCT(($C$2:$C$1000=G2)*($D$2:$D$1000>=300))+SUMPRODUCT(($C$2:$C$1000=G2)*($D$2:$D$1000<=-300)) として、H2~J2セルを範囲指定しJ2セルのフィルハンドルで下へコピーではどうでしょうか? 尚、エラー処理はしていません。 以上、参考になれば良いのですが・・・m(__)m
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No5です。 申し訳ありません。訂正します。F2セルには次の式を入力し下方にオートフィルドラッグしてください。 =IF(B2="","",IF(COUNTIF(B$2:B2,B2)=1,IF(D2<>0,1,0)&"a"&D2&"b"&IF(ABS(D2)>=300,1,0),IF(D2=0,F1,LEFT(F1,FIND("a",F1)-1)+1&"a"&MID(F1,FIND("a",F1)+1,FIND("b",F1)-FIND("a",F1)-1)+D2&"b"&IF(ABS(D2)>=300,MID(F1,FIND("b",F1)+1,5)+1,MID(F1,FIND("b",F1)+1,5)))))
- KURUMITO
- ベストアンサー率42% (1835/4283)
今後店の数が増加しても自由に対応できる方法です。 作業列をEおよびF列に設けてお求めの表はG列からK列に表示させることにします。 E2セルには次の式を入力します。 =IF(B2<>B3,MAX(E$1:E1)+1,"") F2セルには次の式を入力します。 =IF(B2="","",IF(COUNTIF(B$2:B2,B2)=1,1&"a"&D2&"b"&IF(ABS(D2)>=300,1,0),LEFT(F1,FIND("a",F1)-1)+1&"a"&MID(F1,FIND("a",F1)+1,FIND("b",F1)-FIND("a",F1)-1)+D2&"b"&IF(ABS(D2)>=300,MID(F1,FIND("b",F1)+1,5)+1,MID(F1,FIND("b",F1)+1,5)))) E2セルからF2セルまでを選んでそれらの式を下方にオートフィルドラッグします。 G1セルからK1セルには項目名をそれぞれ入力します。 G2セルには次の式を入力してK2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF($E:$E,ROW(A1))=0,"",IF(COLUMN(A1)<=2,INDEX($B:$C,MATCH(ROW(A1),$E:$E,0),COLUMN(A1)),IF(COLUMN(A1)=3,LEFT(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-1)*1,IF(COLUMN(A1)=4,MID(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))+1,FIND("b",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-1)*1,IF(COLUMN(A1)=5,MID(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("b",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))+1,5)*1,""))))) 式は多少複雑になりますが計算速度はSUMPRODUCT関数の場合などに比べて速いでしょう。また、店の増加にも対応しています。EおよびF列が目障りでしたら列を非表示にすればよいでしょう。
範囲 H2:J2 に次の[条件付き書式]を設定した後で、下記の数式を入力して、此れを下方にズズーッとドラッグ&ペースト セルの値が 0 フォント色 白 H2: =SUMPRODUCT((B$2:B$1000=F2)*(D$2:D$1000<>0)) I2: =SUMPRODUCT((B$2:B$1000=F2)*(D$2:D$1000)) J2: =SUMPRODUCT((B$2:B$1000=F2)*(ABS(D$2:D$1000)>=300))
- aduken
- ベストアンサー率69% (25/36)
こんにちは COUNTIF関数ではだめでしょうか? COUNTは範囲のセルの数字の入ったセル数を返す関数です。 =COUNTIF( 範囲 : 範囲 , 条件 ) で記述する事ができ、 >300 と書けば、300以上の判定ができます
- mshr1962
- ベストアンサー率39% (7417/18945)
J3=SUMPRODUCT(($B$2:$B$31=$F3)*(ABS($D$2:$D$31)>=300)) で出来ませんか?
お礼
ご回答ありがとうございました。 スッキリしていて良いですね。 私にも解読できる計算式です。 また機会ありましたらよろしくお願いいたします。大変助かりました。