我有一个电子表格,它是来自外部供应商的报告。日期列的格式与一个小的acccess数据库的工作方式完全不同,所以我决定在excel中记录一个宏来将3列改为dd / mm / yyyy格式(即英文顺便说一句)。这一切都很有效,列如上所示,也列为'DATE'格式。
现在我通过链接表使用访问链接到这个excel表,但我注意到我希望以where子句的形式过滤那些字段的任何查询,它不会提取预期的结果IE它会提取所有日期,而不是我在queryalmost中要求的那些日期,就好像它没有认出它们的日期看到下面的where子句
WHERE LatestGamma.ConfirmedPortingDate Between [Please Provide 1st Date (dd/mm/yyyy)] And [Please Provide 2nd Date (dd/mm/yyyy)];
我也通过在cluase之间使用实际日期来测试它,但它似乎仍然忽略它。
当我查看这些列的链接表的属性时,它显示字段为:dd / mm / yyyy; @但显示为文本? 当我查看excel宏以查看宏用于更改列的日期格式的代码时,我看到: 列( “F:H”)选择 Selection.NumberFormat =“dd / mm / yyyy; @”
我有另一个excel表用作链接表,日期列工作正常并显示为日期/时间而不是文本。它几乎就像excel将一些元数据放入正在进行访问的列中将它们作为文本插入(即使它们被格式化为日期)
我向她伸出了一些帮助/建议会很棒
答案 0 :(得分:0)
如果没有查看文件很难说,但似乎主要的罪魁祸首是excel宏没有正确地将字符串转换为日期格式。您可以尝试使用excel VBA中的类似内容将字符串转换为日期格式
Sub convert()
Dim str1 As String
str1 = Range("f6").Value
startdate = CDate(str1)
End Sub
您可能必须遍历所有单元格才能将字符串(文本)转换为日期格式。
答案 1 :(得分:0)
最后对它进行排序。这或多或少是我认为IE列虽然显示为Date类型似乎将其存储为某种文本。无论如何,绕过它的方法是使用text to columns按钮并强制它为DMY格式的日期。
一旦我尝试了它,我就将动作记录为宏,然后将结果代码复制到我的主宏,宾果! Access现在将其视为日期而非文本。
不确定它是否是一个错误,但Excel可能是一个真正的痛苦,有时尤其是电话号码,必须将它们存储为数据类型文本以保持前导零,然后立即将它们转换为常规以允许vlookups等我猜这就像上面的那种思想一样,显示为一个日期,但实际上却像是一个suedo text meta正在进行......