将格式为Time的文本转换为Excel中的文本

时间:2016-04-07 15:45:25

标签: regex excel vba excel-vba excel-formula

我有一组通过PHP脚本下载的数据 - 一个特定列的数据如下

 8 A, 30 A, 35 A, 100 A, 12 A

现在excel会自动将它们转换为以下格式

8:00 AM, 30 A, 35 A, 100 A, 12:00 AM

对于所有小于24的数字,这种自动转换为时间格式非常令人沮丧。

我通过自定义vba函数尝试了以下regexreplace

 =regexreplace(TextCell, A$, "")

正则表达式适用于所有其他但不是这个。这有什么解决方案吗?

2 个答案:

答案 0 :(得分:1)

  

正则表达式适用于所有其他但不是这个。这有什么解决方案吗?

我不确定我是否明白你需要什么?请举例说明你想用这个正则表达式做什么?

如果你想回到原来的值那么你可以简单地格式化时间值(DateTime像Double一样存储),例如:

Dim txt As Strig
txt = Format(Cells(1, 1).Value, "0 A")

请记住将单元格/列的数据格式设置为' Text' - 如果您希望在工作表中存储适当的值,例如:

Range("A1").NumberFormat = "@"

Range("A:A").EntireColumn.NumberFormat = "@"


  

对于所有小于24的数字,这种自动转换为时间格式非常令人沮丧。

请提供有关何时转换以及如何使用此文件的详细信息?

我问,因为,可能你可以关闭这个'自动转换'也许这将是一个好方法。

例如,如果您有CSV文件,那么当您在Excel中导入此文件时 - 您必须通过“对话框”导入设置' ...并且您可以将列的格式设置为'文字',然后就像'一样导入。

enter image description here

答案 1 :(得分:0)

嗯,将值格式化回格式的快速解决方案是:

=IF(ISNUMBER(A1),A1*24&" A",A1)

或:

=IF(ISNUMBER(A1),HOUR(A1)&" A",A1)