MS Access平均或总和

聚氯乙烯

我有两列数据需要平均值,或者如果其中一个单元格为零,则取非零值。

SELECT ID, IIF((A+B)=A, A,  IIF((A+B)=B, B, (A+B)/2)) AS AVE_AB <br/>
FROM Data; 

有没有办法使此代码更有效?我还有另外25个变量可以执行此操作,并且如果可能的话,希望使我的代码更高效,更短。

如果要构建甚至需要稍微复杂的表达式逻辑的访问查询,并且必须将该逻辑重用于许多对列,则最好创建一个自定义VBA函数(也称为用户定义函数或UDF)来执行此操作工作。例如,这并不难。这种方法具有几个优点,其中最重要的是:

  • SQL视图中更清晰,更干净的代码
  • 减少了在重复文本中很难注意到的错别字引起的错误的可能性
  • 主力代码仅出现一次,因此,如果您想对其进行更新以提高性能或出于其他目的对其进行修改,则只需在单个位置进行更改

按照Excel的= AverageIF()函数(Access没有内置此函数)的示例,您可以按照以下步骤在Visual Basic中创建一个新模块:

Public Function AverageIFNotZero(columnA, columnB)

    If columnA = 0 Then
        AverageIFNotZero = columnB
    Else
        If columnB = 0 Then
            AverageIFNotZero = columnA
        Else
            AverageIFNotZero = (columnA + columnB) / 2
        End If
    End If

End Function

然后,您可以像这样在查询设计器或SQL视图中轻松地重用它:

SELECT ID, AverageIFNotZero(A,B) AS AVE_AB, AverageIFNotZero(C,D) AS AVE_CD FROM Data;

如果您以前从未使用过VBA,请按照以下步骤在Access 2013中设置此简单示例:

  1. 从功能区菜单中选择“数据库工具”,然后在“宏”选择“ Visual Basic”编辑器(Microsoft Visual Basic for Applications)将打开。
  2. 在“项目”窗格中,将存在一个带有数据库名称的节点。右键单击该节点,然后选择“插入”>“模块”。
  3. 将显示一个代码窗口,其中包含一两行自动生成的代码,例如:Option Compare Database和和/或Option Explicit单击您所看到的代码下方,然后键入或粘贴上面以开头的代码示例中的所有内容Public Function
  4. 关闭“ Microsoft Visual Basic应用程序”窗口。该函数现在应该可以在查询设计器或SQL视图中使用。
  5. 关闭数据库时,将要求您保存新模块并为其提供名称,就像对新表或查询一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章