Excel:文本和空白的最小值和最大值

Excel: Min and max of text and blanks

Excel 2019 函数 min()max()MinA()MaxA() 不适用于非数字参数。 A 给出了对文本值执行最大和最小操作的公式:

{=index(A2:A6, match(0, CountIf(A2:A6, ">" & A2:A6), 0))}

为max,min同“>”改为“<”,其中{...}表示用Ctrl-Shft-Enter.

输入的数组公式

这很好用,但我发现其中有一个奇怪的行为。如果给定范围在范围末尾或范围内包含空白单元格(即空,即不包含任何内容),则它工作正常,但如果它在范围开头包含空白,则公式 returns 0:

更复杂的是,如果空白单元格被替换为空字符串,="",那么上面的行为是相同的,除了开头为空字符串的那个变成空而不是0.

这是怎么回事?为什么此公式适用于范围末尾或范围内的空格或空字符串,但不适用于开头?

这是COUNTIF的缺点。虽然 =A1>B1 将得到 FALSE=B1>A1 将得到 TRUE 因为空单元格不大于 AA 大于空,在 COUNTIF 中,空白 ("") 或空白永远不会被计算在内。如果你这样做 =COUNTIF(A1:H1,">"&A1),你会得到 0。因此,没有什么比空单元格 A1.

更大

这是因为 COUNTIF 中使用了文本连接。 =COUNTIF(A1:H1,">"&A1) 将变为 =COUNTIF(A1:H1,">"),它计算有多少值总比没有大。这算 0.

在数组上下文中,COUNTIF(A1:H1,">"&A1:H1) 得到 {0,5,0,4,3,2,0,1},因此 MATCH(0;{0,5,0,4,3,2,0,1},0) 得到 1。然后 INDEX(A1:H1,1) 得到 A1 是空的。所以公式显示 0 就像 =A1 一样。

在 Excel.

中使用 Evaluate Formula 时你会看到这个

可以在 COUNTIF 中的搜索条件后面附加一个 space。因此,空或空白将像 space 一样处理。对于每个其他单元格值,只需附加一个 space,这里应该不会有问题。

{=INDEX(A1:H1,MATCH(0,COUNTIF(A1:H1,">"&A1:H1&" "),0))}

应该可以。

由于 COUNTIF 可以使用星号 (*) 作为通配符来匹配任何字符,我们也可以附加 * 而不是 space。

{=INDEX(A1:H1,MATCH(0,COUNTIF(A1:H1,">"&A1:H1&"*"),0))}

只需尝试更合适的即可。