- 締切済み
エクセル・関数を教えてください
まず、抽象的なタイトルで申し訳ありません。 教ええいただきたいことは、 ・セルA1~A5に0か正数が入ります。 ・正数が入るのは、1つまたは2つのセルです。 ・よって、残りの3つまたは4つは0です。 ・例えばA1に正数が立てば「1」、A2なら「2」・・・と表示します。 ・表示するセルはB1とB2です。 ・結果が1つならば、B1にのみ表示し、B2は空欄です。 ・結果が2つならば、B1とB2に両方とも表示します。 どの結果でも同じセルに表示する方法がわかりませんでした。 アドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- sige1701
- ベストアンサー率28% (74/260)
質問内容で >・セルA1~A5に0か正数が入ります。 >・正数が入るのは、1つまたは2つのセルです。 >・よって、残りの3つまたは4つは0です。 B1=LARGE(INDEX(($A$1:$A$5>0)*ROW($A$1:$A$5),),COUNTIF($A$1:$A$5,">0")) B2=IF(COUNTIF(A1:A5,">0")=2,LARGE(INDEX(($A$1:$A$5>0)*ROW($A$1:$A$5),),1),"") ところで、行番号を求めることが最終目的ですか?
- KURUMITO
- ベストアンサー率42% (1835/4283)
B1セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(LARGE(A$1:A$5,ROW(A1))=0,"",MATCH(LARGE(A$1:A$5,ROW(A1)),A$1:A$5,0)) A1セルからA5セルの間で最も大きな数値のある行をB1セルに、二番目に大きな数値のある行をB2セルに表示します。もちろん二番目の数値が0になる場合にはB2セルは空の表示となります。
- kagakusuki
- ベストアンサー率51% (2610/5101)
B1セルに,次の数式を入力してから、B1セルをコピーして、B2セルに貼り付けると良いと思います。 =IF(COUNTIF($A$1:$A$5,">0")<ROWS(B$1:B1),"",SUMPRODUCT(ROW($A$1:$A$5)*($A$1:$A$5>0)*(COUNTIF(OFFSET($A$1,,,ROW($A$1:$A$5)),">0")=ROWS(B$1:B1))))
- keithin
- ベストアンサー率66% (5278/7941)
では,B1セルに =IF(ROW(B1)>COUNTIF($A$1:$A$5,">0"),"",SMALL(IF($A$1:$A$5>0,ROW($A$1:$A$5)),ROW(B1))) と記入したあと,すぐEnterで入力しないで, キーボードのコントロールキーとシフトキーを押しながらEnterのキーを押して,入力してください。 正しくできると,数式バーの中で数式が{ }のカギ括弧で囲われて表示されます。 次にB1セルをコピーし,B2セルに貼り付けてください。こちらは入力するのではなく,セルをいつものようにコピーし貼り付けます。 今度は操作を間違えたり勝手にスルーしないよう,よく注意して操作してください。 回答1で前半にお話しした数式は,スミマセン,私がご質問をちょっと違う風に捉えていたので間違いでした。失礼しました。
- keithin
- ベストアンサー率66% (5278/7941)
数字が大きい順に出てきた場所を表示: =IF(COUNTIF(A1:A5,">0")>0,MATCH(LARGE(A1:A5,1),A1:A5,0),"") =IF(COUNTIF(A1:A5,">0")>1,MATCH(LARGE(A1:A5,2),A1:A5,0),"") 出てきた順に場所を表示: =IF(ROW(B1)>COUNTIF($A$1:$A$5,">0"),"",SMALL(IF($A$1:$A$5>0,ROW($A$1:$A$5)),ROW(B1))) と記入してコントロールキーとシフトキーを押しながらEnterして入力,下向けにコピー
お礼
ありがとうございます。 ですが、うまくいきません。A1に「1」、A2に「1」を入力しましたが、 B1、B2ともに「1」が表示されます。この場合、B1に「1」B2に「2」と 表示させたいのです。 下の方は、2つ目がエラーになりました。 説明が分かりづらかったらすみません。 ちなみにエクセルは2007です。