|
是不是该这么理解你的需求:
保留 N、Q、S 列,还是用你原来的方法,用程序控制 7 次,将 M2 复制给 N2,让 N、Q、S 列的函数公式取值计算,但 S 列每次得到的结果“不显示在 U~AA 列”,而是保存于内存中处理寻找最大值,并显示到 AE 列。
这样,你就可以随意编辑 S 列的公示了,是吧?
- Sub test_v2()
- Dim Sht As Worksheet
- Dim i As Integer, n As Long, iRow As Long
- Dim arrTmp As Variant, arrTar As Variant
-
- Application.ScreenUpdating = False
-
- Set Sht = Sheets("sheet1")
-
- '取数据行数,以 B 列为基准
- iRow = Sht.cells(Rows.Count, 2).End(xlUp).Row - 3
-
- '动态调整结果数组的长度,并初始化赋值 0
- ReDim arrTar(1 To iRow)
- For n = 1 To iRow
- arrTar(n) = 0
- Next
-
- For i = 1 To 7
- 'M2 赋值给 N2,将 S 列的计算结果读入临时数组(二维)
- Sht.Range("N2") = Sht.Range("M2").Value
- arrTmp = Sht.Range("S4").Resize(iRow, 1)
-
- For n = 1 To iRow
- '找最大值
- If arrTar(n) < arrTmp(n, 1) Then arrTar(n) = arrTmp(n, 1)
- Next
- Next
-
- '输出结果到 AF 列
- Sht.Range("AF4").Resize(iRow, 1) = WorksheetFunction.Transpose(arrTar)
-
- Set Sht = Nothing
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|