首页 > 解决方案 > 使用 Do Loop 同时根据单独的选择省略单元格

问题描述

我目前正在研究可靠性计算器,作为更广泛计算的一部分,需要以下循环:

'Add redundant units to any pieces of equipment with reliabilites lower than target
'Set Variables
    DatRange = Worksheets(system).ListObjects("Table_" & system).ListColumns("Reliability of Configuration").DataBodyRange
    minVal = Application.WorksheetFunction.Min(DatRange)
    Do Until minVal > Target_Reliability

    'Identify row of min value
        Row = Application.WorksheetFunction.Match(minVal, DatRange, 0)

    'Add redundancy to relevant row
        quantity_fitted = Worksheets(system).ListObjects("Table_" & system).ListColumns("Quantity Fitted (n)").DataBodyRange(Row)
        Worksheets(system).ListObjects("Table_" & system).ListColumns("Quantity Fitted (n)").DataBodyRange(Row) = quantity_fitted + 1

    'Prime for next loop
        DatRange = Worksheets(system).ListObjects("Table_" & system).ListColumns("Reliability of Configuration").DataBodyRange
        minVal = Application.WorksheetFunction.Min(DatRange)

    Loop 

因此,通过检查“配置可靠性”列中所述的可靠性值来检查每行/行组件,以找到提供最低可靠性的行/行。然后将额外的数量添加到该行,直到其可靠性超过系统的目标可靠性,该目标由用户单独设置。

原则上这是可行的,除了在另一列中,我有一个下拉选择供用户输入特定组件是否排列在“待机”、“活动”或“系列”配置中。

我需要运行上面的代码,但要省略“配置:”列值设置为“系列”的任何行/行。

换句话说,有没有办法编辑这部分代码:

'Set Variables
    DatRange = Worksheets(system).ListObjects("Table_" & system).ListColumns("Reliability of Configuration").DataBodyRange
    minVal = Application.WorksheetFunction.Min(DatRange)
    Do Until minVal > Target_Reliability

因此,它不是简单地找到最小值,而是找到任何也设置为“活动”或“待机”的行的最小值,而忽略该行设置为“系列”的任何值?

我希望这是有道理的。我已经为此苦苦挣扎了一段时间,真的需要帮助。

谢谢!

标签: excelvbaloopsdo-loopsreliability

解决方案


推荐阅读