vba – 在单元格中设置数据显示的date

可能是一个简单的问题,我只是不能指出我的数字,因为我还没有完全理解如何处理Excel中不同的“层”(数据实际上是在一个单元格中,而不是显示的内容)。date)

我有我的单元格内的以下数据

10/17/2014 10/18/2014 10/19/2014 10/20/2014 

我跑了下面的vba代码,希望重新格式化这些数据:

 Sheet1.Range("C2", "C1000").NumberFormat = "dd-mmm-yyyy" 

这使得我的数据显示为:

 17-Oct-2014 18-Oct-2014 19-Oct-2014 20-Oct-2014 

这实际上是我想成为的。 唯一的问题是如果我点击实际的单元格内,数据仍然是10/18/2014格式。

现在从我的理解“格式”只会改变数据的显示方式。 我似乎无法在网上find如何在屏幕上显示的内容,并将单元格的值更改为正在显示的内容。 我认为这是一个“受欢迎”的问题,反复提问,或许我的search技能刚刚起飞,我找不到这篇文章。 任何帮助,将不胜感激。 谢谢。

我已经读过,我可以使用“select性粘贴”,但这需要格式化单元格,然后手动复制和粘贴值,这不是我想要的。 我希望完全自动化这个VBA里面。

尝试这个:

 Sheet1.Range("C1:C1000").Value = Sheet1.Evaluate("""'"" & INDEX(TEXT(C1:C1000,""dd-mmm-yyyy""),)") 

'在开始时强制输出成文本。

你也可以这样做:

 Sheet1.Range("C1:C1000").NumberFormat = "@" Sheet1.Range("C1:C1000").Value = Sheet1.Evaluate("INDEX(TEXT(C1:C1000,""dd-mmm-yyyy""),)") 

这将把格式化为date的数字转换成看起来像date的文本。 换句话说,如果这些单元格上的任何引用或math公式都需要将它们转换回数字。