• 締切済み

エクセル関数で、正負の数字を2つのグループに振り分ける関数はありますか。

エクセル関数で、正負の数字を2つのグループに振り分ける関数はありますか。 ゼロの数字は読まないで、かつ重複しないで振り分ける方法を教えてください。 下に、データがあります。それぞれの回と点数のデータがあり、それを新たにプラスとマイナスで分けたいと思います。 =IF(COUNTIF(B1:B6,"<0"),INDEX(B2:B6,MATCH(-1,INDEX(SIGN(B2:B6),0),0)),"") で、最初に現れるマイナスの数字を拾ってみましたが、ゼロを無視できなかったり、同じ数字を拾ってしまい、うまくいきません。宜しくお願いします。 データ: 回  点数 1  -10 2  300 3  0 4  -400 5  500 6  600 下のように自動で振り分けたい (B列) (C列) 点数がマイナス     点数がプラス -10     300 -400     500     600

みんなの回答

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.2

●甲案:作業列を使って真っ当に…。 例えば、B2セル以下に元データがあるとします。 C2セル : =IF(AND(COUNTIF($B$2:B2,B2)=1,B2>0),ROW(),"") として下方にフィルすれば、「初出の正数」について行番号が表示されますから、 D2セル : =IF(ISERR(INDEX(B:B,SMALL(C:C,ROW()-ROW($D$1)))),"",INDEX(B:B,SMALL(C:C,ROW()-ROW($D$1)))) として下方にフィルすれば、「正数の重複を許さない一覧」が得られます。 同様に、 E2セル : =IF(AND(COUNTIF($B$2:B2,B2)=1,B2<0),ROW(),"") F2セル : =IF(ISERR(INDEX(B:B,SMALL(E:E,ROW()-ROW($F$1)))),"",INDEX(B:B,SMALL(E:E,ROW()-ROW($F$1)))) としてそれぞれ下方にフィルすれば、「負数の重複を許さない一覧」が得られます。 ---------------------------------------------- ●乙案:数式一発で。 長くなりますが、数式一発でもやれなくはないです。 G2セル : 「正数の重複を許さない一覧」  =INDEX(B:B,1/LARGE(INDEX((COUNTIF(OFFSET(B$2,,,ROW(B$2:B$99)-ROW($B$1)),B$2:B$99)=1)*(B$2:B$99>0)/ROW(B$2:B$99),),ROW()-ROW($G$1))) H2セル : 「負数の重複を許さない一覧」  =INDEX(B:B,1/LARGE(INDEX((COUNTIF(OFFSET(B$2,,,ROW(B$2:B$99)-ROW($B$1)),B$2:B$99)=1)*(B$2:B$99<0)/ROW(B$2:B$99),),ROW()-ROW($H$1))) なお、乙案の方は「エラー処理」はしていません(長くなるので) すべての値が返った後は#DIV/0!エラーが表示されます。 以上ご参考まで。

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

A列に元の数字があるなら  B1=IF(A1<0,A1,"")  C1=IF(A1<0,"".A1) これで解決すると思いますけど? そのあと INDEX関数や MATCH関数で数字を集めれば良いと思います よく分からなくなったら、一つの関数式で完結させようとしないことです どこかに作業用の列などを挿入してその結果を操作すると上手くできますよ