我正在尝试将以下excel公式转换为Access中的计算字段。使用表达式或用户定义表达式与VBA代码的组合。任何帮助赞赏!并欣赏有关数据规范化的任何想法,但这不是问题。 THX
IF(SMALL(T319:V319,2)>6,SMALL(T319:V319,1),IF(SMALL(T319:V319,2)=0,LARGE(T319:V319,1),SMALL(T319:V319,2)
单元格T319-V319是由生成的数据查询生成的每个记录中的字段。为此目的称他们为A,B,C。
答案 0 :(得分:0)
假设我预先输出数据,以便从最大到最小,这三个值由字母I,J和K表示。这意味着J是SMALL(T319:V319,2)
,K是SMALL(T319:V319,1)
,我是LARGE(T319:V319,1)
。
UPDATE:修复了函数的伪代码和最后一部分。我误读了Excel公式的嵌套IF:P
伪代码将是:
If J > 6 Then
return K
ElseIf J = 0 Then
return I
Else
return J
你确定这是你想要的吗?
如果是这样,您可以按如下方式创建VBA功能:
Public Function GetVal(A As Variant, B As Variant, C As Variant)
Dim I As Variant
Dim J As Variant
Dim K As Variant
'Sort the three values so A, B, C becomes sorted largest to smallest as I, J, K
If A > B Then
If A > C Then
I = A
If B > C Then
J = B
K = C
Else 'C > B
J = C
K = B
End If
Else 'C > A
I = C
J = A
K = B
End If
Else 'B > A
If B > C Then
I = B
If A > C Then
J = A
K = C
Else 'C > A
J = C
K = A
End If
Else 'C > B
I = C
J = B
K = A
End If
End If
'Use I, J, K to find the result
If J > 6 Then
GetVal = K
ElseIf J = 0 Then
GetVal = I
Else
GetVal = J
End If
End Function