date值在复制时发生更改
我有单元格包含一个简单的连接函数与前一年的D24(如15)和一个自定义格式( MMM JJ )
CONCATENATE("Apr ",$D$24)
当我用VBA复制和粘贴这些单元格时,“4月15日”变成了“15.04.16”,由于格式化“4月16日”
Selection.Value = Selection.Value
这是背后的原因吗? 除了将格式更改为文本之外,还有其他解决scheme吗?
Excel通常会将看起来像date的任何东西转换成真实的date(序列号,其中1 = 1 Jan 1900)。 避免这种情况的一种方法是,如上所述删除公式,就是预先格式化为文本。 所以:
With Selection .NumberFormat = "@" .Value = .Text End With
可能做你想做的事情。
还有其他的方法,但是如果你不改变单元格的格式为文本,或者用单引号作为单词'
前缀,那么任何后续的单元格编辑,即使是无意的select,都会增加将其转换为实际date的风险。
这取决于你想要的细胞。 你想要一个string还是一个date?
如果你想要一个string:
-
格式为文本或
-
添加':
CONCATENATE("'Apr ",$D$24)
如果你想要一个date:
- 使用下面的公式代替连接:
=DATE($D$24,4,1)
如果你只是复制粘贴它,只有值粘贴不格式化(如果我没有记错的话)
尽量避免使用Selection
而不是使用Range
。
并使用Range.Copy
和Range.PasteSpecial Paste:=xlPasteFormats
以便您的格式粘贴的值。