DLookUp 将数据与上个月的数据进行匹配

DLookUp 将数据与上个月的数据进行匹配

长话短说,我有从 Inception 到现在的数据,我想使用以下逻辑从中提取从本月到现在的数据:ITD_Current - ITD_Previous = MTD_Current。我想某种方法DLookUp可以解决这个问题。

数据的结构如下:

Company Code | Store Number (multiple store # to a company code) | Date (yyyymm) | ITD Data

我的第一个实验是使用以下方法为每一行创建一个唯一的键

 [Company Code] & [Store Number] & [Date]

我将其命名为 Key_Current。然后我创建了一个Key_Previous列,其格式与上述完全相同,但日期值设置回一个月。然后我创建了一个 DLookUp 函数,如下所示:

DLookUp("[ITD Data]","Table",[Key_Current]=[Key_Prev])

这显然行不通,但希望有人能理解我的意思。我需要的是提取上一个起始日期列,并将其与当前起始日期列进行匹配。然后我可以扩展公式以从上一个中减去当前日期。

对此有什么看法?谢谢!

答案1

该条件必须以字符串形式传递。

DLookUp("[ITD Data]", "Table", "[Key_Current]=[Key_Prev]")

但是,当前密钥永远不会与前一个密钥相似,因此不会产生任何结果。

简单的方法DLookUp不行,因为它只对一行进行操作。假设你知道当前数据的键,你可以这样做

Dim currentKey As String, prevKey As String

currentKey = <somehow get this key>
prevKey = DLookUp("[Key_Prev]", "Table", "[Key_Current]='" & currentKey &"'")
prevData = DLookUp("[ITD Data]", "Table", "[Key_Current]='" & prevKey &"'")

也许更好的方法是进行查询

SELECT A.*, A.[ITD Data] - Nz(B.[ITD Data]) As MTG_Current
FROM
    Table A
    LEFT JOIN Table B
        ON A.[Key_Prev] = B.[Key_Current]

您可以将表与其自身连接起来以比较不同的行。

相关内容