Excel,最小/最大宏的不同范围

时间:2018-09-20 18:06:44

标签: excel vba excel-formula

我希望为不太熟悉以下代码的人开发一个简短的宏。

我有一个类似于附件的文件,但更大得多。

对于那些想知道其FMEA得分的人。

我想获取每组黄色单元格的最大值*蓝色单元格的值*红色单元格的最小值,然后在绿色单元格中仅显示该值。

对于我列出的金额,我很欣赏它易于编写公式。但是正如我所说的,文件本身要大得多,并且由于我试图显示列的长度都不同,所以我不能只看一下说5行,然后将公式复制下来,因为它不会放在正确的位置。

有没有简单的方法可以做到这一点?任何帮助,将不胜感激。

img1

2 个答案:

答案 0 :(得分:3)

这确实假定组中的最大项目数为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

答案 1 :(得分:1)

假设每个“标题栏”之间都有一个开放的休息时间,则以下内容应为您工作。可以将其作为公式输入,只需要做的就是创建一个新的宏,然后将下面的代码粘贴到代码窗口中。

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”将产生范围的最大值。此函数将支持无限的参数,并且不区分大小写。