我是飞行员,并使用名为Logten Pro的日志程序。我可以从我的工作飞行管理软件中获取保存的excel电子表格,并使用CSV格式将它们导入Logten Pro。
我的问题是,工作飞行管理软件以下列excel格式将航班起飞的日期和时间输出到一个单元格:DD / MM / YYYY H:MM:SS PM。 这可以通过Excel处理得很好,并且默认格式化为DD / MM / YY,即使实际值更具体,包括全长日期和时间组。
这是一个问题,因为Logten Pro只会自动导入日期,如果它是DD / MM / YY格式,并且没有办法只提取显示的DD / MM / YY日期而不是完整日期时间组实际值,除非您手动浏览并删除功能框中的额外文本。
我的问题是:是否有一个VBA宏可以自动复制实际显示的文本,并将其粘贴到另一个单元格中,将实际值更改为DD / MM / YY值?另外,这可以一次完成整列而不是单个单元吗?
注意我没有VBA经验,所以完美的答案就是我可以复制和粘贴的完整VBA字符串。
谢谢。
答案 0 :(得分:10)
正如评论中所指出的,你最好不要使用VBA而是使用公式。
这个公式:
TEXT(A1,"dd-mm-yyy")
将以文本方式返回格式化日期。您可以在整个细胞范围内拖放公式,Copy/Paste Special
> Values
这样您只需要在Logten Pro中导入所需的值。
答案 1 :(得分:0)
使用公式有三种选择。
Excel将日期时间存储为数字,并使用格式将其显示为日期。 格式为date.time,其中整数是日期,分数是时间。
举个例子 01/01/2012 10:30:00 PM存储为40909.9375
小数点后的所有值都与小时和分钟有关
因此,可以使用公式将数字四舍五入为整数。
=ROUNDDOWN(A1,0)
然后将值格式化为短日期。 然后它将显示为01/01/2012
如上所述,但使用不同的公式来摆脱分数(时间)
=INT(A1)
或者,只能使用此公式将日期提取为文本
=TEXT(A1,"dd/mm/yyyy")
然后显示为01/01/2012
答案 2 :(得分:0)
在这个聚会上我来晚了一点,但是最近在寻找类似问题的答案时碰到了这一点。
这是我最后想出的答案。
Option Explicit
Sub ValuesToDisplayValues()
Dim ThisRange As Range, ThisCell As Range
Set ThisRange = Selection
For Each ThisCell In ThisRange
ThisCell.Value = WorksheetFunction.Text(ThisCell.Value, ThisCell.NumberFormat)
Next ThisCell
End Sub
这将回答所问的问题,除了将新值粘贴到现有值上之外,而不是粘贴到新单元格中,因为没有简单的方法来知道您希望将新值粘贴到哪里。它可以在选定单元格的整个范围内工作,因此您可以在需要时整列。