0

此问题使用以下数据,这些数据将在固定单元格范围内手动自适应 - B 列范围中的每个单元格都包含一个公式。它旨在从基础公式单元格中找到最后一个数据单元格。

给定数据

我想找到公式范围 B2:B11 中数据的最后一个公式单元格,并从最后一个单元格创建一个动态中位数,上面有四个单元格。中值应输出到单元格 F6——结果为 9。这是一个动态练习。鉴于下面的代码,关于如何最有效地做到这一点的任何想法?

Sub OutputMedian()

 Dim FunctionRange As Range

    'Represents a fixed range with function in B2:B11
    Set FunctionRange = Worksheets("Sheet1").Range("B2:B11")


   'Must start median calc from B9, as it's the last cell with function output data

   'Must store Median from last data cell, using 5 cell offset (see output from cell F2)

   'Must output the Final (e.g., median output of 9 here) to cell F6


End Sub
4

1 回答 1

0

请参阅:Excel VBA:获取包含所选范围内数据的最后一个单元格

我对上述问题的@brettdj修改的答案(由@varocarbas引用)。谢谢!

让它工作!输出正确的动态中位数,从下面的 -4 偏移量设置五个周期。

Sub OutputMedian()

    Dim WS As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range

    Set WS = Sheets("Sheet1")
    Set rng1 = WS.Columns("B:B").Find("*", Range("B1"), xlValues, , xlByRows, xlPrevious)
    Set rng2 = rng1.Offset(-4, 0)

    Dim FirstCell As String
    Dim LastCell As String

    FirstCell = rng2.Address(0, 0)
    LastCell = rng1.Address(0, 0)

    Dim CellResponse As String
    CellResponse = Evaluate("=median(" & FirstCell & ":" & LastCell & ")")
    Range("F6").Value = CellResponse


End Sub

在创建动态函数时使用对象(例如,R1C1、Cells)的更好方法——即,不将函数作为连接字符串传递给 Evaluate?

于 2013-11-04T20:13:29.700 回答