【问题标题】:Excel, Min/Max macro different rangeExcel,最小/最大宏不同范围
【发布时间】:2018-09-25 22:21:51
【问题描述】:

我正在尝试为不太擅长以下代码的人开发一个简短的宏。

我有一个与附件类似但更大的文件。

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

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

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

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

【问题讨论】:

  • 我很难相信宏会比这里的公式更容易 - 您正在处理多少行?您的数据集之间是否总是有一个完全空的行?
  • 一个“集合”中的 2-12 行之间的某个地方,总体上是 10,000 的最佳部分。理想情况下是空行。如果没有,我可以很容易地把它们放进去。

标签: excel vba excel-formula


【解决方案1】:

这确实假设 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 不是组中的最大数量,请将 20s 更改为每组的最大项目数。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2015-05-18
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多