我们需要一个脚本来比较D列中的日期和E列中的日期。
如果D列中的日期比E列中的日期早两天,那么我们需要F列来说明在D对应的行中。我们的范围是前2天和后2天(肩后天)。我们需要能够轻松地重现此代码,并在将其导入到Access中时使其能够运行。我们有大约3300个独特的日子可供检查。
我尝试使用datevalue或公式,但是我们需要将来能够重现它,并且该公式不允许我们轻松地做到这一点。
答案 0 :(得分:0)
我不会提供完整的实现,但是我可以向您展示如何实现(使用 Excel公式或使用 VBA代码)。两种方法都会自动计算您需要的值,因此您可以轻松地将其导入到 Microsoft Access 中-导入将从选定的单元格中获取计算出的值。
第一种方法(也是最简单的方法)是使用简单的 Excel formula, 来考虑此图片:
它在 G列中计算差异 D2-D1 ,并以天为单位显示。
然后,在 F列中,有一个简单的if
条件来确定日期D1是否小于,大于或等于D2。 结果是自动计算的。
第2行中的公式为:
Column G
=E2-D2
Column F
=IF(G2>0;"D1 < D2";IF(G2=0;"D1 = D2";"D1 > D2"))
您可以将公式拖放到下面的行中,这样就可以创建很多用该公式预填充的行。
第二种方法是您可以为F列中的(简单)计算公式编写 VBA function :
Function CalcResult(D1 As Variant, D2 As Variant) As Variant
CalcResult = ""
Dim result As String
Dim diff As Single
diff = D2 - D1
If (diff > 0) Then
result = "D1 < D2"
ElseIf (diff = 0) Then
result = "D1 = D2"
ElseIf (diff < 0) Then
result = "D1 > D2"
End If
CalcResult = result
End Function
在这种情况下,请将以下内容放在单元格F2中:
Column F
=CalcResult(E2; D2)
该方法的优点是您可以稍后改进函数,而对于我之前展示的单元宏方法而言,这并不容易。
注意:上面的功能需要在单独的模块中,并且您需要将工作簿另存为“启用宏的工作簿”。
第三种方式是使用 Excel macro recorder 并记录您打算做的事情。它将使用VBA代码创建一个公共模块。如果记录器要求您,请选择将代码存储在工作簿中。
稍后,您重新访问生成的VBA代码并对其进行优化-例如,在其周围放置一个for循环以自动执行一次已记录的内容。 这种方法非常适合创建“计算”按钮并为其添加一些逻辑。