Использование Do L oop при исключении ячеек на основе отдельного выбора - PullRequest
0 голосов
/ 02 марта 2020

В настоящее время я работаю над калькулятором надежности, и в рамках более широкого расчета требуется следующее l oop:

'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 

Таким образом, каждая строка / ряд компонентов проверяется путем проверки значение надежности указано в их столбце «Надежность конфигурации», чтобы найти любую строку / строку, предлагающую наименьшую надежность. Затем к этой строке добавляются дополнительные количества, пока ее надежность не превысит целевую надежность системы, которая устанавливается пользователем отдельно.

Это работает в принципе, за исключением того, что в другом столбце у меня есть выпадающий выбор, чтобы пользователь мог указать, расположен ли конкретный компонент в конфигурации "Ожидание", "Активно" или "Серия".

Мне нужен приведенный выше код для запуска, но для пропуска любой строки / строки, в которой для столбца «Configuration:» установлено значение «Series».

Другими словами, есть ли способ чтобы отредактировать эту часть кода:

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

Чтобы вместо простого поиска минимального значения он нашел минимальное значение любой строки, для которой также установлено значение «Активный» или «Ожидание», игнорируя любое значение, для которого в строке задано значение "Series"?

Надеюсь, это имеет смысл. Я некоторое время боролся с этим и действительно нуждался в помощи.

Спасибо!

...