Vba 查找带有函数输出数据的最后一个单元格并输出新结果
此问题使用以下数据,这些数据将在固定的单元格范围内手动自适应——B列范围内的每个单元格都包含一个公式。它旨在从基础公式单元格中查找最后一个数据单元格 我想找到数据在公式范围B2:B11内的最后一个公式单元格,并从上面四个单元格的最后一个单元格创建一个动态中值。中位数应输出到单元格F6——结果为9。这是一个动态的练习。考虑到下面的代码,您对如何最有效地实现这一点有何想法Vba 查找带有函数输出数据的最后一个单元格并输出新结果,vba,excel,functional-programming,dynamic-programming,Vba,Excel,Functional Programming,Dynamic Programming,此问题使用以下数据,这些数据将在固定的单元格范围内手动自适应——B列范围内的每个单元格都包含一个公式。它旨在从基础公式单元格中查找最后一个数据单元格 我想找到数据在公式范围B2:B11内的最后一个公式单元格,并从上面四个单元格的最后一个单元格创建一个动态中值。中位数应输出到单元格F6——结果为9。这是一个动态的练习。考虑到下面的代码,您对如何最有效地实现这一点有何想法 Sub OutputMedian() Dim FunctionRange As Range 'Represent
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偏移量设置五个时段
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、单元格)的更好方法——即不将函数作为串联字符串传递到Evaluate?定义和填充FunctionRange的代码对我来说似乎很好。其余的呢?我想(希望)这不是您最好的尝试。注意:希望不使用循环来实现这一点。您的最后一个评论非常精彩:这样一个请求的确切意义是什么?另外,移动到VBA的确切意义是什么?你不能仅仅通过公式来做到这一点吗?@Varocarbas正在研究替代方案,以及def可实现性…希望看到其他人如何解决它。你应该知道,这不是事情的运作方式:你向我们展示了你的代码、你的努力、你为什么尝试了一切以及为什么它不起作用,等等。我们提出了解决方案。但我们不应该为您编写全部代码。这可能有助于从两个字符串“B9”和“B5”中获取中值,输出值而不是最终公式: