用于在多张纸上循环的范围内查找最大值和最小值的 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.Min
和 Application.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 代码的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin - 在索引范围内的 IntArray 中查找最小值