Excel, Мин. / Макс. Макрос разные диапазоны - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь разработать короткий макрос для кого-то, кто не слишком хорош с кодом для следующего.

У меня есть файл, похожий на прикрепленный, но гораздо больший.

Для тех, кто интересуется его оценкой FMEA.

Я хочу взять максимальное значение каждого набора желтых ячеек * значение синей ячейки * минимальное значение красных ячеек и отобразить только это значение в зеленой ячейке.

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

Есть ли простой способ сделать это?Любая помощь будет оценена.

img1

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Предполагая, что между каждым «титульным блоком» есть открытый разрыв, следующее должно работать для вас.Его можно ввести в виде формулы, все, что нужно сделать, это создать новый макрос и вставить код снизу в окно кода.

Function minMax(ByVal rRange As Range, MinOrMax As String) As Double
Dim dMin As Double
Dim dMax As Double
Dim lLastRow As Long
Dim ws1 As Worksheet

Set ws1 = ActiveWorkbook.ActiveSheet
lLastRow = ws1.Cells(rRange.Row, rRange.Column).End(xlDown).Row

dMin = ws1.Cells(rRange.Row, rRange.Column).Value
dMax = dMin

For Each cell In rRange.Cells
    If cell.Value < dMin Then dMin = cell.Value
    If cell.Value > dMax Then dMax = cell.Value
Next cell

    If InStr(1, MinOrMax, "min") = 1 Then
        minMax = dMin
    Else
        minMax = dMax
    End If

End Function

Чтобы использовать эту пользовательскую функцию, введите в ячейкугде вы хотите значение как "= minMax (B1: B10," min ")", где второй аргумент должен быть либо в кавычках Min или Max.Нажатие «Min» приведет к минимуму диапазона, а «Max» - к максимальному значению диапазона.Эта функция будет поддерживать неограниченное количество аргументов и нечувствительна к регистру.

0 голосов
/ 20 сентября 2018

Предполагается, что максимальное количество элементов в группе - 19.

Поместите это в H2 и скопируйте:

=IF(A2<>"",MAX(C2:INDEX(C:C,AGGREGATE(15,6,ROW(C2:C20)/(C2:C20=""),1)))*E2*MIN(G2:INDEX(G:G,AGGREGATE(15,6,ROW(G2:G20)/(G2:G20=""),1))),"")

Если 19 не максимальное число вИзмените в группе 20 s на максимальное количество элементов в группе.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...