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

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

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

【问题讨论】:

  • 我不同意这是“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 的目标,但没有足够的信息来确定哪种方法(如果有的话)最合适。 ,,,
  • ...这就是为什么我认为这是一个不清楚的问题。如果您有不同的解释,我很乐意阅读。

标签: excel vba


【解决方案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”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多