Excel VBA从数据中删除存储在整个数据中的时间

使用excel VBA,我将如何在整个列中的所有date应用公式Date(年(A1),月(A1),日(A1))? 目前数据是date时间格式(例如30/04/1995 9:35:00 AM),但我只想要date – 30/04/1995

目前所有的date都存储在一个数组中,我已经尝试过列(data_column).NumberFormat =“[$ -1009] d-mmm-yy; @”但我没有成功从date中删除时间。

如果要在保留时间信息的同时更改数据的显示格式,可以在工作表或统计图轴的单元格中使用类似NumberFormat =“mm / dd / yyyy”的内容。

Excel将date/时间信息存储为浮点数。 天数在小数点左边,天数(hh:mm:ss)的分数在右边。 如果要从底层数据中去除时间信息,请将其转换为Long,然后再转换为Date。 在VBA中:

DateOnly = CDate(CLng(DateTime)) 

在工作表公式中,只需将其转换为Int即可

 DateOnly = INT(DateTime) 

希望有所帮助

Excel中的所有date包括time:datetime。 只能在一个单元格中存储一个date或一个时间是不可能的。 原因是Excel将它们存储为数字。 小数点前的任何内容都是date,小数点后的任何内容都是时间。 因此,即使您将数字42000放入一个单元格(小数点后面没有任何内容),并将该单元格的格式更改为date,该值仍将为2014年12月27日(1899年12月31日后的42000天)假定时间早上零= 00:00:00。

由于所有数字都可能有小数点后面的东西,因此所有date在Excel中都有时间,并且所有时间都有date。

您可以做的唯一的事情是:格式化一个单元格,只显示date部分或时间部分或两者。 所以,你所要做的就是隐藏时间。

如果要将所有date更改为在小数点后有零,则必须遍历数字并将所有值更改为INT值。

 For intColumn = 1 to 1000 If Sheet1.Cells(1, intColumn).Value2 = vbNullString then Exit For Sheet1.Cells(1, intColumn).Value2 = Int(Sheet1.Cells(1, intColumn).Value2) ' Do not use CInt but Int only! next intColumn