如何使用AverageIFS条件为多个条件编写宏。

时间:2018-06-19 08:00:08

标签: excel excel-vba if-statement vba

我需要一个可以处理多个标准的宏来获取平均值。

  1. 读取" Sheet1"中的值(说" 5"是值) - 见截图。

  2. 一旦阅读,它应该转到" Sheet2"仅对第一个" 5"取A列的平均值值 - >因为它读取了步骤1中的5值。

  3. 将平均值粘贴在" sheet3"

  4. 如果值大于5,则最后一步,然后必须返回该值 - > (例如,如果是" 7" - >则应返回7,而不是平均值。

    我无法发布宏,因为我只是这个宏内容的初学者。

    截图:

    enter image description here

2 个答案:

答案 0 :(得分:0)

只是一个建议,没有任何宏,但在Sheet3中有一个公式:

=IF(Sheet1!A2<=5,AVERAGE(INDIRECT("Sheet2!A1:A"&Sheet1!A2)),Sheet1!A2)

如果需要,调整范围

答案 1 :(得分:0)

作为一个单线子程序,您可以拥有:

Public Sub GET_AVERAGE()
   Sheet3.Range("A2").Value2 = Application.WorksheetFunction.Average(Sheet2.Range("A2:A" & Sheet1.Range("A2").Value2 + 1))
End Sub

这会将sheet2范围的平均值A2:A x放入sheet3范围A2 - 其中x由Sheet1.Range(“A2”)定义.value(在您的情况下,5 )