我希望为不太熟悉以下代码的人开发一个简短的宏。
我有一个类似于附件的文件,但更大得多。
对于那些想知道其FMEA得分的人。
我想获取每组黄色单元格的最大值*蓝色单元格的值*红色单元格的最小值,然后在绿色单元格中仅显示该值。
对于我列出的金额,我很欣赏它易于编写公式。但是正如我所说的,文件本身要大得多,并且由于我试图显示列的长度都不同,所以我不能只看一下说5行,然后将公式复制下来,因为它不会放在正确的位置。
有没有简单的方法可以做到这一点?任何帮助,将不胜感激。
答案 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更改为每个组中的最大项目数量。
答案 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”将产生范围的最大值。此函数将支持无限的参数,并且不区分大小写。