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


0

这里的长篇故事是我有Inception to date数据,我想使用这个逻辑从中提取月度数据: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])

这显然不起作用,但希望有人能理解我想要达到的目标。我需要的是将上一个启动日期列引入日期列,并将其与当前启动日期列匹配。然后我可以扩展公式以减去先前的电流。

有什么想法吗?谢谢!

Answers:


0

条件必须作为字符串传递。

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]

您可以将表连接到自身以比较不同的行。


实现这一目标的最佳方法绝对是查询。多么优雅的解决方案!谢谢。
gflowers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.