我创建了一个非常依赖宏的工作簿,但遇到了一个很奇怪的问题。它围绕着一个简单的VLOOKUP()
.
目前,我的宏在一张工作表(工作表 A)上创建一个行项目,然后将该行项目复制到另一张工作表(工作表 B)。复制该行项目后,我使用工作VLOOKUP()
表 B 中的函数在工作表 A 中查找该行项目的日期和时间,以确认它仍在工作簿中。
通常情况下,整个场景都运行良好。VLOOKUP()
显然可以在 Sheet B 中找到唯一 ID,并将其追溯到 Sheet A。
我遇到的问题是,如果有人输入F2包含 Sheet B 中的日期和时间的单元格(使用、双击单元格等),则该VLOOKUP()
函数会出错。通过点击F2Sheet A 中的日期和时间单元格可以解决此问题。
这导致了一系列的问题,因为我有一个宏,如果出现错误,它会删除行项目,所以这个暂时的错误会导致一切都崩溃。
我尝试过匹配格式等等,但这似乎是一个非常独特和奇怪的问题。
有人遇到过这种情况吗?你能分享一些解决方法吗?
表 A(请注意,预订的日期和时间是唯一的 ID)
表 B
公式A3
为
=IFERROR(VLOOKUP($C3, 'Sheet A'!$A:$A,1,0),"Not in Book")
当公式出错时,工作表 B 如下所示:
答案1
此问题是由于您的宏放置了文本单元格中的值Date&Time Booked
,但将单元格的数字格式设置为General
自定义日期格式(有意或无意)。
当您在Sheet B 的单元格中按下F2,然后按下 时,Excel 会将文本日期时间转换为序列日期时间,并将数字格式调整为自定义日期格式(因此它仍然EnterDate&Time Booked
看起来相同)。您的VLOOKUP()
函数现在尝试将文本日期时间与序列日期时间(即数字)进行比较,因此它们当然不会匹配。在 Sheet A 中的单元格上重复该过程会将该值转换为序列日期时间,因此匹配再次成功。
如果没有看到您的宏并且准确了解您随后如何使用预订的日期时间值,就很难就如何解决问题提出具体的建议。
最简单的解决方案是将单元格NumberFormat
的属性设置Date&Time Booked
为@
(文本)。
另一个解决方案是修改宏,以便它将正确的序列日期时间写入工作表。