Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查找带有函数输出数据的最后一个单元格并输出新结果_Vba_Excel_Functional Programming_Dynamic Programming - Fatal编程技术网

Vba 查找带有函数输出数据的最后一个单元格并输出新结果

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

此问题使用以下数据,这些数据将在固定的单元格范围内手动自适应——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偏移量设置五个时段

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”中获取中值,输出值而不是最终公式: