【发布时间】:2015-10-29 00:19:53
【问题描述】:
我正在尝试为我的工作簿中的每个工作表找到最大值,该最大值取决于用户选择的范围。我希望用户只选择一次范围并根据该范围找到每个工作表的最大值。
换句话说,假设用户选择范围 B1:B100。宏应遍历每张纸并在每张纸的 B1:B100 范围内找到最大值。
最终,每个工作表都有一组数据点,我想将这些数据点除以在用户选择的范围内找到的最大值。
这是我的代码(嗯,相关部分):
Sub Plot()
Dim i, ws_count As Integer
Dim userng, brng As Range
Dim maxval As Double
On Error GoTo Canceled
Set userng = Excel.Application.InputBox("Please input range.", "Input", Selection.Address, , , , , 8)
ws_count = ActiveWorkbook.Worksheets.Count
For i = 1 To ws_count
Worksheets(i).Activate
maxval = userng.Cells(1, 1).Value
For Each Cell In userng.Cells
If Cell.Value > maxval Then
maxval= Cell.Value
End If
Next Cell
Set brng = Worksheets(i).Range("B1:B1869") ''brng will always be B1:B1869 for each worksheet
'Each cell in B1:B1869 should be divided by maxval.
For Each Cell In brng
Cell.Value = Cell.Value / maxval
Next Cell
Next i
Canceled:
End Sub
不幸的是,宏只能找到第一个工作表的最大值并将该值应用于所有其他工作表。理想情况下,每个工作表都将除以其唯一的maxval。
如果能提供任何帮助,我将不胜感激!
【问题讨论】:
标签: excel vba for-loop input worksheet