VBA宏返回列表中的最小值?

Posted

技术标签:

【中文标题】VBA宏返回列表中的最小值?【英文标题】:VBA macro to return the lowest value in a list? 【发布时间】:2021-12-15 20:44:13 【问题描述】:

我正在尝试编写一个 VBA Excel 宏,它将返回列表(C 列)中的最小值并将答案放在单元格“G3”中。

Sub LowestSales2()
    Dim c As Range
    Set c = Range("C2:C" & Rows.Count)
    Range("G3").Value.Low = c
End Sub

【问题讨论】:

@BigBen 抱歉,我附上了我当前的代码,我的主要问题是使用“打印”功能将我的结果放入 G3。当然,当一个简单的 MIN 函数就足够了时,我需要使用宏。 Application.WorksheetFunction.Min 避免在问题中粘贴代码图像。请删除图像。复制并粘贴代码,而不是发布图片。 【参考方案1】:

不需要范围。任君挑选……

选项 1

此选项将在单元格G3中插入一个公式

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    
    '~~> Change this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Range("G3").Formula = "=MIN(C:C)"
End Sub

选项 2

如果您不需要公式,请使用Evaluate

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    
    '~~> Change this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Range("G3").Value = ws.Evaluate("MIN(C:C)")
End Sub

选项 3

正如雷蒙德建议的那样,使用Application.WorksheetFunction.Min。此选项将在G3 中插入最小值

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    
    '~~> Change this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Range("G3").Value = Application.WorksheetFunction.Min(ws.Columns(3))
End Sub

【讨论】:

友情提示:选项 2 可能会产生不需要的结果,因为它不是完全合格的;使用worksheet related evaluation 将是解决此问题的最简单方法:ws.Range("G3").Value = ws.Evaluate("MIN(C:C)") :-) @SiddharthRout @T.M.:好点!更新了帖子。谢谢

以上是关于VBA宏返回列表中的最小值?的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核错误返回值ERRNO宏列表

如何使函数返回 VBA 中的对象列表

我可以使用 VBA 函数将可接受值的(动态)列表返回到 Excel 的数据验证中吗?

Excel VBA 宏生成可能组合的列表

VBA代码根据excel工作簿中的值从webform下拉列表中选择一个值

VBA:如何搜索单元格范围的值,并返回该位置旁边的单元格?