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

解決済みの質問

エクセルのワークシート関数で最小値

エクセルのワークシート関数でA1セルとB1セルの最小値を求める場合
=MIN(A1,B1)
だと思います。
しかし、これではどちらかのセルが空白だった場合、空白セルを0とみてはくれません。
そのため
=MIN(A1*1,B1*1)
と、1を乗ずることで空白セルを0にして比較できます。
しかしA1、B1セルの値が直接入力されたものでなく計算の結果の場合にはうまくいかない場合があります。
A1、B1ともに計算式がはいっているので空白はあり得ないのですが、計算結果で =”” と空白表示の場合、空白表示セルを0とみてはくれません。
しかし、空白表示セル(=””)に1を乗ずるとVALUEエラーになってしまいます。
やむを得ず、IF関数を使い
=MIN(IF(A1="",0,A1),IF(B1="",0,B1))
と、無理やり=””を0にしているのですが、ほかになにか良い方法はないでしょうか?
A1、B1の計算式を変えて=0とすればよいのでしょうが、元の計算式を変えずにやる方法があれば御教示ください。

投稿日時 - 2018-12-31 15:02:37

QNo.9573149

暇なときに回答ください

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

=MIN(SUM(A1),SUM(B1))
では如何かな?

投稿日時 - 2018-12-31 17:57:49

お礼

msMikeさん、いま、MINA関数を使うことで決定・・・・と思ったら。
なんと、これなら本当の空白でも=""の空白表示でもどちらにも対応できるのですね!素晴らしいです!!
年も押し詰まった大晦日に ありがとうございました。
良いお年をお迎えください。

投稿日時 - 2018-12-31 18:31:13

ANo.8

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

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

回答(8)

ANo.7

下記は、質問に対し、ピント外れかどうか?参考までに上げてみます。
ーー
エクセル関数式があるセルに、すでに入っていて、その式を変えずに結果を思い通りの結果にしたいというのは無理でしょう。
ーー
ある列の、セル範囲の、最少値を求めるとき、下記の要求はあり得ます。
(1)空白セルは除外したいーー>もともとこの関数は除外して考えているようだ。
(2)0のセルを除外したいーー>
https://www.hello-pc.net/howto-excel/small/
に解説があります。確認尾ために別途やってみると、
A2:A12に書きデータがあるとする。
12
23
0
22
3
空白セル
0
45
56
3
0
ーー
A13セルに =SMALL(A2:A11,COUNTIF(A2:A11,0)+1) で
結果は3(空白や0ではない)
仕組とか考え方は上記サイトに解説があります。

投稿日時 - 2018-12-31 17:28:01

お礼

ありがとうございます。
今回は文字列を0とみなすMINA関数を使うことにします。

投稿日時 - 2018-12-31 17:56:15

ANo.6

>しかし、これではどちらかのセルが空白だった場合、空白セルを0とみてはくれません。
はい、そう云う仕様です。
ブランクは数値に化けますが数字以外の文字を含む文字列は数値化できません。

>計算結果で =”” と空白表示の場合、空白表示セルを0とみてはくれません。
それは数式を設定した人の責任でしょう。(Excelのせいにしてはいけません)
「=""」の代わりに「=0」にすれば良いことです。

>元の計算式を変えずにやる方法があれば御教示ください。
ありません。
キーボードからの入力ではなく文字の置換で「=""」を「=0」に置き換えることは可能です。

投稿日時 - 2018-12-31 16:34:41

お礼

ありがとうございます。
今回は文字列を0とみなすMINA関数を使うことにします。

投稿日時 - 2018-12-31 17:55:45

ANo.5

【補足】Nz()は、次のようにも書けます。

Public Function Nz(ByVal V As Variant) As Double
On Error Resume Next
  Nz = V
End Function

投稿日時 - 2018-12-31 16:14:15

お礼

ありがとうございます。
今回は文字列を0とみなすワークシート関数のMINA関数を使うことにしました。

投稿日時 - 2018-12-31 17:54:41

ANo.4

Q、=MIN(IF(A1="",0,A1),IF(B1="",0,B1))の代替案?
A、=MIN(Nz(A1),Nz(B1))

Nz関数を用意するのも手です。

Option Explicit

Public Function Nz(ByVal V As Variant) As Double
  Nz = IIf(Len(V), V, 0)
End Function

投稿日時 - 2018-12-31 16:05:06

お礼

これはユーザー定義関数を自作するということですね?
ありがとうございます。

投稿日時 - 2018-12-31 17:53:45

ANo.3

No1です。補足します。
注意点としては、空白以外の文字列があった場合も0とします。
空白値のみ0としたいのであれば、今の関数でよいと思います。

投稿日時 - 2018-12-31 15:31:59

お礼

はい、MINA関数を調べました。ありがとうございました。

投稿日時 - 2018-12-31 17:48:40

ANo.2

A1、B1セルの値が空白ではなく計算エラーだったりする場合は、A1セルとB1セルの最小値を求めることはできません。無理やり=””を0にする方法でできるのでしたらそれでいいと思います。

投稿日時 - 2018-12-31 15:30:39

お礼

ありがとうございます。
計算エラーの場合はまた別途対応するとして、今回は文字列を0とみなすMINA関数を使います。

投稿日時 - 2018-12-31 17:43:51

ANo.1

MINA関数を使います。
=MINA(A1,B1)

投稿日時 - 2018-12-31 15:27:49

お礼

molly1978さん、年の瀬のお忙しい中にすばらしい回答をありがとうございました!
MINA関数、初めて知りました。
文字列を0とみなすとはまさにこれですね。ありがとうございます。
これで安心して新年を迎えられます。
良いお年を!

投稿日時 - 2018-12-31 17:41:38

あなたにオススメの質問