在 Excel 工作表上使用 SQL 会产生奇怪的结果

Using SQL on an Excel Worksheet has strange results

提问人:Shaves 提问时间:10/6/2023 最后编辑:Alan SchofieldShaves 更新时间:10/6/2023 访问量:35

问:

我有用户选择多个文件的宏。每个文件都复制到宏中的新工作表中。选择所有文件后,宏使用 SQL 从每个工作表中提取数据并将其粘贴到“数据”工作表上。将数据移动到“数据”工作表后,将创建一个数据透视表。

用户通知我们,数据透视表中的一列超出了 1.00 美元。我发现工作表中的一个金额 (13.24) 在“数据”表上显示为不同的金额 (14.24)。

这是从每个工作表中提取数据的代码:

vsql = "SELECT [Region Name], [Site Ledger Code],[GL Account], [DeptID], [Emp Number], [Emp Name]," _
                        & "IIF (ISNUMERIC(MID([Description],1,3)) = TRUE, MID([Description],1,3), """"), " _
                        & "IIF (ISNUMERIC(MID([Description],1,3)) = TRUE, MID([Description],7,(LEN ([Description])-6)), [Description]), " _
                        & "IIF ([TTYPE] = ""Debit"",  [Amount], 0) AS Debit, " _
                        & "IIF ([TTYPE] = ""Credit"", [Amount], 0) as Credit, " _
                        & "[Amount], [Pay Date]" _
                        & "FROM [" & WrkShtName & "$]" _
                        & "WHERE [Description] <> ""Net Pay"" and [Description] <> ""NPA - Net Pay Adjustment (US)"""

当我查看记录集时,金额不是显示为金额,而是显示为日期。然后,当它们粘贴到“数据”表上时,它们显示为金额。除了 13.24 之外,所有金额都很好。数据中的另一行是 -13.24,它在“数据”表上显示为 -13.24。

我不明白为什么正数 13.24 会变成 14.24。13.24 是 SQL 或 Excel 中的特殊数字吗?

感谢您在我失去其余头发/头脑之前提供的任何帮助或建议......

SQL Excel VBA

评论

0赞 Alan Schofield 10/6/2023
如果不查看所有数据,就无法分辨,但我猜您在某处有 1 美元的金额,它具有相同的属性/维度/属性或您想称呼它们的任何内容,就像 13.24 金额一样。我会通过过滤尺寸来过滤数据表以匹配 13.24 记录,看看你会得到什么。顺便说一句:我建议 power query 可以很容易地完成您的所有 VBA 操作,只是一个想法。
0赞 Shaves 10/6/2023
@AlanSchofield....谢谢你的建议。我无法显示数据,因为它是工资单信息。宏逐个工作表,并且仅提取特定工作表上的数据。更改发生在那时,但我会检查以前的工作表,看看该员工是否也存在在那里。感谢您的帮助。
0赞 CLR 10/6/2023
您的查询似乎根本不是求和,因此它一定是转换错误。我会调查记录集显示为日期的事实,因为它可能相关。

答: 暂无答案