【问题标题】:Excel- How to collect the max value of an array of cells dependent on one other cellExcel-如何收集依赖于另一个单元格的单元格数组的最大值
【发布时间】:2019-04-01 02:13:59
【问题描述】:

我需要创建一个可以快速排序几千个数据点以找到最大值的代码。数据点依赖于一个单元格,该单元格也需要通过多个值进行评估。

我尝试仅使用 application.worksheet 函数对代码在移动到下一个数据点之前生成的数据进行排序,但我收到“编译错误:类型不匹配”消息。见代码:

Sub GenerateData()
    Dim curDataPt As Long, curVal As Long
    Dim rngOut As Range, rngIn As Range, rngData As Range, rngVar As Range

    Const maxVal As Long = 50
    Const minVal As Long = 0.02
    Const stepVal As Long = 0.01

    Set rngIn = Sheet2.Range("B10")
    Set rngOut = Sheet2.Application.WorksheetFunction.Max(Range("H29:H1569"))
    Set rngVar = Sheet2.Range("N1")
    Set rngData = Sheet2.Range("O1")

    For curVal = minVal To maxVal Step stepVal
        curDataPt = curVal / stepVal
        rngIn = curVal
        rngVar.Offset(curDataPt) = curVal
        rngData.Offset(curDataPt) = rngOut
    Next curVal
    Sheet1.Names.Add "DataIn", rngVar.Resize(curDataPt + 1)
    Sheet1.Names.Add "DataOut", rngData.Resize(curDataPt + 1)
End Sub

我希望代码生成 5000 个 rngIn 和 rngOut 单元列,从 N1 和 O1 开始。我相信问题出在 Application.WorksheetFunction 代码中,但我不知道另一种方法可以有效地获取这些值。

提前致谢。


编辑: 我为使代码的框架能够正常工作而进行了一些更改,并希望能更好地解释我想要什么。

这是我试图扩展以获得我需要的代码:

子生成数据() Dim curDataPt As Long, curVal As Long Dim rngOut 作为范围,rngIn 作为范围,rngData 作为范围,rngVar 作为范围

Const maxVal As Long = 10
Const minVal As Long = 1
Const stepVal As Long = 1

Set rngIn = Sheet2.Range("B6")
Set rngOut = Sheet2.Range("H40")
Set rngVar = Sheet2.Range("AB1")
Set rngData = Sheet2.Range("AC1")

For curVal = minVal To maxVal Step stepVal
    curDataPt = curVal / stepVal
    rngIn = curVal
    rngVar.Offset(curDataPt) = curVal
    rngData.Offset(curDataPt) = rngOut
Next curVal
Sheet2.Names.Add "DataIn", rngVar.Resize(curDataPt + 1)
Sheet2.Names.Add "DataOut", rngData.Resize(curDataPt + 1)

结束子

运行时,代码会生成图 1 中的列表。

rngIn on left, rngOut on right

这通常是我想要做的;但是,我需要我的 rngOUT 是由 rngIN 控制的范围的最大值(见图 2)。

rngOUT is in the u0 column highlighted on the right

这就是为什么最初,我试图在整个 u0 范围内使用 worksheetfunction.max 命令。

我也不知道如何使我的 stepVal 和 minVAL 有理数。这可能是我在 6 年前的一门编码课上忘记的简单事情。

再次提前致谢。无论如何,我都不是编码员,所以这个网站教会了我很多东西。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我很不清楚你在这里想要完成什么。一个错误提示如下:

    rngIn = curVal 
    

    这不起作用有两个原因:rngIn 是一个范围,它是一个需要设置的对象。 curVal 是一个 Long,永远​​不会适合 Range。这个错误会导致你说你得到的那个。如果您需要进一步的帮助,请发布您的数据示例、您尝试使用的工作表函数的信息以及您期望从该子中获得的输出信息。

    【讨论】:

    • 感谢您的评论,我已尝试通过编辑来解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2020-12-14
    相关资源
    最近更新 更多