Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从最小公式Excel中排除0_Excel_Formula_Min - Fatal编程技术网

如何从最小公式Excel中排除0

如何从最小公式Excel中排除0,excel,formula,min,Excel,Formula,Min,我需要知道如何从行中排除0并获得最小值 但我还需要排除F1细胞 例: 但如果我在excel中使用=MIN(A1,B1,C1,D1,E1)执行此操作,则返回0 非常感谢您的帮助。在结果单元格中输入以下内容,然后在按Enter键的同时按Ctrl&Shift键: =MIN(If(A1:E1>0,A1:E1)) 试试这个公式 =小((A1,C1,E1),索引(频率((A1,C1,E1),0),1)+1) SMALL函数和FREQUENCY函数都接受“并集”作为参数,即单单元格引用由逗号分隔,并用

我需要知道如何从行中排除0并获得最小值

但我还需要排除F1细胞

例:

但如果我在excel中使用=MIN(A1,B1,C1,D1,E1)执行此操作,则返回0


非常感谢您的帮助。

在结果单元格中输入以下内容,然后在按Enter键的同时按Ctrl&Shift键:

=MIN(If(A1:E1>0,A1:E1))
试试这个公式

=小((A1,C1,E1),索引(频率((A1,C1,E1),0),1)+1)

SMALL函数和FREQUENCY函数都接受“并集”作为参数,即单单元格引用由逗号分隔,并用括号括起来,如(A1、C1、E1)

因此,公式使用频率和索引来找到一个范围内的零的数量,如果加上1,则得到k值,使得第k个最小值始终是除零以外的最小值


我假设你没有负数…

不完全确定你想要的是什么,但是如果你想打折范围内的空白单元格并传递零,那么这就可以了;如果有点做作:

=MIN(IF(A1:E1=0,MAX(A1:E1),A1:E1))
使用Ctrl+Shift+Enter作为数组


我在这里所做的是用列表中的最大值替换零。

如果所有值都为正值,则可以执行-max(-n)

到目前为止,最有效的方法是使用如下所示的SMALL和COUNTIF公式

SMALL返回数据集中的第k个最小值

=小型(A1:A100,COUNTIF($A$1:$A$100,0)+1)

其中,countif对范围(+1)内的零进行计数,并用于告诉SMALL返回第k个最小值

信用证:

min()功能排除布尔值和字符串值。
如果将零替换为“”(空字符串),则-min()函数将根据您的喜好执行其工作

您所要做的就是删除仅包含该内容的单元格中的“0”,然后重试。这应该行得通。

列出的解决方案并不完全适合我。最接近的是维古姆酋长——我想对他的回答发表评论,但缺乏这样做的声誉。因此,我将其作为单独的答案发布:

=MIN(IF(A1:E1>0;A1:E1))
然后,不要按ENTER键,而是按CTRL+SHIFT+ENTER键,观察Excel将
{
}
分别添加到公式的开头和结尾(以激活数组中的公式)


首席Wiggum提议的逗号“,”和“如果”语句在Excel Home和Student 2013上不起作用需要一个分号“;”以及全大写“IF”来完成这个任务。语法差异很小,但我花了1.5个小时才弄明白为什么会出现错误和#值。

我很生气:

1) 首先我们对一组整数执行NOT函数, 将非零求值为0,将零求值为1

2) 然后我们搜索原始整数集中的最大值

3) 然后,我们将步骤1中生成的集合中的每个数字乘以步骤2中找到的最大值,将1设置为0,将0设置为最大值

4) 然后我们将步骤3中生成的集合添加到原始集合中

5) 最后,我们在步骤4生成的集合中查找最小值

{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
如果你知道数字的大致范围,你可以用一个常数代替最大范围。这稍微加快了速度,但仍不足以与更快的功能竞争


还对5000个整数的数据集进行了快速测试,公式执行了5000次

{=SMALL(A1:A5000,COUNTIF(A1:A5000,0)+1)}
1.700859秒| 5301902个滴答声过去了

{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
1.935807秒| 6034279个滴答声过去了

{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
3.127774秒| 9749865个滴答声过去了

{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
3.287850秒| 10248852个滴答声过去了

{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
3.328824秒| 经过10376576次滴答声

{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
3.394730秒|
10582017

Hi@JamesBlond,这个公式没问题,但我只需要选择A1,C1,E1。非常感谢。这有点复杂,我会使用DMIN()函数。在这里查看e非常详细的描述:如果您想要A1、C1和E1中的最小值,但不包括零,答案不是1吗?-请看我的答案。这实际上是一个答案——它对你有用,可以理解,其他人可能会觉得它有用。所以,干得好。在这里,有一个向上投票,让你开始有足够的代表评论时,评论是正确的:)感谢向上投票和支持的态度。真的很感激!:)我完全同意@芭丝谢芭发现使用NOT代替=可以稍微改善一些情况……但仍然不足以使用最快的方法
{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
{=MIN(If(A1:A5000>0,A1:A5000))}
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}