用于在多张纸上循环的范围内查找最大值和最小值的 VBA 代码

Posted

技术标签:

【中文标题】用于在多张纸上循环的范围内查找最大值和最小值的 VBA 代码【英文标题】:VBA code for finding the Max and Min values in a range looping on multiple sheets 【发布时间】:2020-06-22 17:38:21 【问题描述】:

帮助任何人!

我一直在尝试大量代码,但似乎没有任何效果。我可以使用什么 VBA 代码?

数据详细信息:在我的 50 张工作表的每一列 N 中,我都有百分比格式的数据。我需要在我的 50 张纸中找到这些数字的最小值和最大值,然后将值返回到我的首页。

我对 VBA 非常陌生,我似乎无法弄清楚。非常感谢任何建议!

【问题讨论】:

Application.MinApplication.Max 你是怎么把它循环到所有的床单上的?我用过它,但每当我让它在工作表之间循环时,它就不起作用了 For Each ws in ThisWorkbook.Worksheets. 您想要每张纸的最小/最大值,还是将所有纸一起考虑? 你好 BigBen!我正在寻找考虑所有数据表的最小/最大值。我正在使用此代码,但由于某种原因,它似乎不起作用。 Dim ws As Worksheet 'For Each ws In ThisWorkbook.Worksheets ' Max = WorksheetFunction.Max(ws.Range("N:N")) 'Next ws 【参考方案1】:

为什么不直接使用公式? =MAX(Sheet1!N:N,Sheet2!N:N,,Sheet3!N:N) 等...

【讨论】:

那么您会想要一个 3-d 公式,对吧? =MAX(Sheet1:Sheet50!N:N). 为此我需要一个 VBA 脚本【参考方案2】:

看起来您有一个包含多列的庞大数据集,其中列的总数和它们的位置是动态的而不是恒定的?

我们可以假设您有列标题吗?如果是这样,假设您的标题在第 1 行以 Col A 开头,而您的数据从 A2 开始,您可以在每张纸的顶部执行此操作以获得百分比列的最大值:

=MAX(INDEX($A$2:$Z$1000, , MATCH("YOUR HEADER NAME HERE WHERE %s ARE", $A$1:$Z$1,0)))

如果您需要在所有工作表上执行此操作并将其放在一个页面的顶部,您可以使用 vba 编写循环遍历所有工作表的脚本:

Sub WorksheetLoop()

         ' Declare Current as a worksheet object variable.
         Dim Current As Worksheet

         ' Loop through all of the worksheets in the active workbook.
         For Each Current In Worksheets

            ' Insert your code here.
            ' This line displays the worksheet name in a message box.
            MsgBox Current.Name
         Next

      End Sub

【讨论】:

以上是关于用于在多张纸上循环的范围内查找最大值和最小值的 VBA 代码的主要内容,如果未能解决你的问题,请参考以下文章

用于查找单元格值是不是在范围内的双 For 循环

Kotlin - 在索引范围内的 IntArray 中查找最小值

在 Python 中查找最小值或最大值的值的索引

给定一个大小为 N 的数组,我需要找到在最小和最大范围内求和的最小值数

使用 PIL 查找像素的最大和最小 RGB 值

查找金属纹理中的最小值和最大值