こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法

Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法

Excelで関数を使って「ある範囲内で条件を満たす最小の列を返す」
というセルの作成方法を教えていただけませんか?

例えばA1からJ1の1行に

0 0 0 1 2 1 3 6 0 0

という数値が入力されているとします。

この10個のセルを左から順に「セル内の値>0となる」という条件に合うか調べた場合、
何列目に条件を初めて満たす事ができるかを返すセルを作りたいのです。

この場合「セル内の値>0」の条件を満たす最小の列のセルは、
「1>0」となるセルD1となり、左から4列目なので 「4」 を返したい。



出来れば「ある範囲内で条件を満たす最大の列を返すセル」の作成法も教えていただけませんか?

(1)の例の場合「セル内の数値>0」の条件を満たす最大の列のセルは、
「6>0」となるセルH1となり、左から8列目なので「8」を返すようなセルを作りたい。


複数のシートにデータがあり、それらのシートに一括でこのセルを作りたいため、
補助となる行を入れるのはよいのですが、
行列を入れ替えるような操作がいらない方法が知りたいです。
どうかよろしくお願いします。

投稿日時 - 2010-08-29 20:59:24

QNo.6144733

すぐに回答ほしいです

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

こんばんは!
一例です。

最小の列の場合は
=MIN(IF(A1:J1>0,COLUMN(A1:J1)))

最大の列の場合は
=MAX(IF(A1:J1>0,COLUMN(A1:J1)))

どちらも配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。
表示したいセルに貼り付け後、F2キーを押す、または貼り付けセルでダブルクリック、または数式バー内で一度クリックします。

編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

これをオートフィルで下へコピーではどうでしょうか?

以上、他に良い方法があれば読み流してくださいね。m(__)m

投稿日時 - 2010-08-29 21:09:17

お礼

返答が遅くなってしまい、すみません。
配列数式というのを使うのにShift + Ctrl + Enterキーが必要なのですね。
これで目的のセルを作ることが出来ました。
ありがとうございます。

投稿日時 - 2010-08-30 13:18:58

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

>前回の方法は勘違いしていると思います。
>前回は「0」以外の値が最初に出た列番号と「0」以外の最後の列番号を表示させる方法でした。


話がおかしいほうに行っているような気がします。

質問者からの返答がありませんが、もともとの質問は「0」以外の値が最初に出た列番号と「0」以外の最後の列番号を表示させたいということではないでしょうか?

配列数式の操作がわからないということなら、以下のような数式を入力されてみてはいかがでしょう。
(すべての数字を埋めた場合のみデータを表示する設定にしています)。

最小の列番号
=IF(COUNT(A1:J1)=10,MIN(INDEX((A1:J1<=0)*100+COLUMN(A1:J1),)),"")

最大の列番号
=IF(COUNT(A1:J1)=10,MAX(INDEX((A1:J1>0)*COLUMN(A1:J1),)),"")

もし、これらの回答がご希望の結果にならないなら、どのようにうまくいかないのか具体的に補足回答をしてください。

投稿日時 - 2010-08-30 11:28:03

お礼

こちらの質問意図に関しては仰るとおりです。ありがとうございます。
配列数式にする事ができたので、配列数式を使うことにしました。
今回は使用しませんが、INDEXの使い方は後々参考にさせて頂きます。

投稿日時 - 2010-08-30 13:57:23

ANo.3

0を超えた数値で最初にあらわれた列番号は次の式で求められます。なお、式を確定する際はCtrl+Shift+Enterを同時に押します。

=SMALL(IF(A1:J1>0,COLUMN(A1:J1)),COLUMN())

最大値が入力されている列番号は次の式で求められます。

=MATCH(LARGE(A1:J1,1),A1:J1,0)

投稿日時 - 2010-08-30 07:25:40

お礼

オートフィル使用可能な式をありがとうございます。
参考にさせていただきます。

投稿日時 - 2010-08-30 13:52:24

ANo.2

No.1です!
たびたびごめんなさい。

前回の方法は勘違いしていると思います。
前回は「0」以外の値が最初に出た列番号と「0」以外の最後の列番号を表示させる方法でした。

もしかして、「0」以外で最小値がある列番号と最大値がある列番号を表示させたいのでしょうか?

もしそうであれば、↓のように訂正してください。

「0」以外の最小値が最初に出てくる列を求める場合

=IF(COUNTIF(A1:J1,0),MATCH(SMALL(A1:J1,COUNTIF(A1:J1,0)+1),A1:J1,0),MATCH(MIN(A1:J1),A1:J1,0))
これは配列数式ではありません。このままコピー&ペーストで大丈夫だと思います。

最大値が入力されている列番号を求める場合

=MAX(IF(A1:J1=MAX(A1:J1),COLUMN(A1:J1)))

こちらは配列数式になりますので、前回同様にShift+Ctrlキーを押しながらEnterキーで確定です。

どうも何度も失礼しました。
今回も外していたらごめんなさいね。m(__)m

投稿日時 - 2010-08-29 22:12:18

お礼

前回の回答の方が私の目的に合っていました。
">0"を使うことで">1"に出来たりと可変も効くので。
二度も回答していただいてありがとうございます。

投稿日時 - 2010-08-30 13:45:40

あなたにオススメの質問