Excel Vba。将 [m] 格式转换为通用格式

Posted

技术标签:

【中文标题】Excel Vba。将 [m] 格式转换为通用格式【英文标题】:Excel Vba. Convert [m] format to general 【发布时间】:2016-12-10 09:21:44 【问题描述】:

我在 Excel 中有这段 1:30 的数据。由于我想以分钟为单位显示经过的时间,我将单元格格式定义为 [m],以获取 90 作为我的显示值。 (Cell.Numberformat = [m])

有没有办法将此值转换为“通用”格式?我仍然希望在我的单元格中使用值 90,但使用“通用”格式。

【问题讨论】:

VBA format cells to General的可能重复 我不同意这是“VBA 格式单元格到常规”的副本。 OP 希望将时间转换为分钟数,这比更改数字格式要多得多。在不清楚的情况下结束这个问题也许是合法的。 OP 声明他更改了单元格的NumberFormat,但随后询问Is there any way to convert this value to "general" format? I still want to have the value 90 in my cell but with "general" format. - 这就是欺骗标志的原因。很高兴改变它,但这似乎是一个骗局(根本不是一个坏问题)。 @RobinMackenzie 这个问题不值得争论。我的解释是 OP 希望以分钟为单位显示时间值,但没有特殊的数字格式。将数字格式更改为 General 会将显示更改为 .0625,这不是 OP 想要的。这就是为什么我不认为这是重复的。如果不更改单元格值,我认为无法实现 OP 的目标。至少有两种方法可以实现 OP 的目标,但没有足够的信息来确定哪种方法(如果有的话)最合适。 ,,, ...这就是为什么我认为这是一个不清楚的问题。如果您有不同的解释,我很乐意阅读。 【参考方案1】:

如果您将 90 分钟的值转换为“常规”,则 Excel 将返回值“0.0625”。

尝试使用 Application.Text 将显示值 90 存储为变量。

myValue = CDbl(Application.Text(myValue, "[m]"))

在 01:30:00 ('hh:mm:ss') 的值上对此进行测试后,返回值 90。

【讨论】:

【参考方案2】:

Excel 将日期和时间存储为数字。在一个单元格中输入“1:30”,然后在另一个单元格中输入“.062500”。将“1:30”单元格重新格式化为“带六位小数的数字”,它将显示为“.062500。将“.062500”单元格重新格式化为“h:mm”,它将显示为“1:30”。

当您在 Excel 中键入时,它会查看值并决定它是什么类型的值。如果它确定它是日期或时间或日期和时间,则将其转换为数字,但设置 NumberFormat 以匹配值的格式。

该数字的整数部分是:自 1900 年 1 月 1 日以来的天数

该数字的小数部分是自午夜以来的秒数 / (24 * 60 * 60)

要以“常规”数字格式显示以分钟为单位的时间,您需要在另一个单元格中放置一个值为“=HOUR(xn)*60 + MINUTE(xn)”的公式,其中 xn 是地址您要转换的单元格。

另外,VBA 宏可以查找格式为“hh:mm”的单元格,将单元格的值替换为分钟数,并将 NumberFormat 替换为“General”

【讨论】:

以上是关于Excel Vba。将 [m] 格式转换为通用格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有html标签的一列文本转换为excel中vba中的格式化文本

vba把一个带时间的日期转为不带时间的日期

通过 Excel VBA 通过 Outlook 发送电子邮件 - 将字符串转换为货币格式或百分比

EXCEL VBA转为文本

vba--将excel单元格格式改为常规格式

Excel vba 将数字转换成字符串的函数是哪个