VBAFIND函数找到了最小值为啥不能确定单元格?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBAFIND函数找到了最小值为啥不能确定单元格?相关的知识,希望对你有一定的参考价值。
Private Sub CommandButton1_Click()
Dim m As Integer, n As Integer, i As Integer, y As Single, rng As Range
Cells.Interior.Pattern = xlNone
m = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To m
n = Cells(i, Columns.Count).End(xlToLeft).Column
y = Application.WorksheetFunction.Min(Range(Cells(i, "h"), Cells(i, n)))
Set rng = Range(Cells(i, "h"), Cells(i, n)).Find(y, , xlValues, xlWhole)
rng.Interior.ColorIndex = i
Next
End Sub
代码如上,调试的时候能找到最小值y,在确定单元格的时候却是nothing ,所以无法给要选定的单元格添加颜色,请教高手
Private Sub CommandButton1_Click()
Dim m As Integer, n As Integer, i As Integer, y As Double, rng As Range, a As String
Cells.Interior.Pattern = xlNone
m = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To m
n = Cells(i, Columns.Count).End(xlToLeft).Column
a = Cells(i, Columns.Count).End(xlToLeft).Address
a = Mid(a, 2, InStr(2, a, "$") - 2)
y = Application.WorksheetFunction.Min(Range(Cells(i, "h"), Cells(i, n)))
Columns("h:" & a).NumberFormatLocal = "G/通用格式"
Columns("h:" & a).EntireColumn.AutoFit
Set rng = Range(Cells(i, "h"), Cells(i, n)).Find(y, , xlValues, xlWhole)
rng.Interior.ColorIndex = i
Next
End Sub 参考技术A 代码没问题,只是,H列都会依次填充不同的颜色
这个和N有关 参考技术B
这是由于浮点数的原因引起的。
建议在这种情况下,不要使用 y 作为“中转”方式来调用,直接把 Min 函数代入在这里即可:
Set rng = Range(Cells(i, "h"), Cells(i, n)).Find(Application.WorksheetFunction.Min(Range(Cells(i, "h"), Cells(i, n))), , xlValues, xlWhole)
追问你好,我试了这个办法也不行,但是我今天测试的时候发现一个问题,就是如果y值是整数的时候就行,比如16,如果换成15.60就不行了,不知道什么原因,请帮忙分析一下,谢谢。
追答所以说浮点数引起的问题!
刚才我已经测试了这段代码,改了几个浮点数,试过都成功了!
刚才又仔细看了你的代码,可能还与你的代码循环查找有关系(Excel 可以会记住上一次查找的地址)。那样子的话,那你应该把 Find 的参数 After 加上再试试看!比如让 After: = Cells(i, n)
通过忽略 MS Excel 中非相邻单元格的 NA 来计算最小值
【中文标题】通过忽略 MS Excel 中非相邻单元格的 NA 来计算最小值【英文标题】:Calculate Minimum by Ignoring NA for Non-Adjacent Cells in MS Excel 【发布时间】:2020-05-09 07:27:27 【问题描述】:我有数据(示例如下),我想在其中找到 L 的最小值值,并且R,但忽略 NA。
我尝试过引用https://superuser.com/questions/862279/minimum-of-non-zero-non-adjacent-cells-in-ms-excel等函数,但不起作用。
【问题讨论】:
【参考方案1】:只找到 L 的值
=IF(AND(A11="L",NOT(A13="N/A")),A13)
并找到 R 的值
=IF(AND(A11="R",NOT(A13="N/A")),A13)
然后找到它们中的最小值
【讨论】:
【参考方案2】:你可以使用数组公式:
如果N/A
是错误值
=MIN(IFERROR(IF($A$2:$J$2=K$2,$A3:$J3,""),""))
如果N/A
是字符串,只需删除IFERROR
函数
=MIN(IF($A$2:$J$2=K$2,$A3:$J3,""))
编辑后的数组公式按ctrl
+shift
+enter
确认
【讨论】:
以上是关于VBAFIND函数找到了最小值为啥不能确定单元格?的主要内容,如果未能解决你的问题,请参考以下文章