在vba中将日期格式从yyyymmdd更改为yyyy / mm / dd

时间:2017-11-23 10:53:11

标签: excel-vba vba excel

我的单元格值为WYYYYMMDD,需要将其转换为YYYY / MM / DD。实际需要是我想通过使用DATEADD函数将7天添加到特定日期。此函数的日期格式为YYYY / MM / DD,单元格值的日期为WYYYYMMDD。

2 个答案:

答案 0 :(得分:1)

我不确定WYYYMMD中的W是什么,但是如果你可以摆脱它,那么以下内容应该有效:

       x.Value = DateSerial(Left(x.Value, 4), Mid(x.Value, 5, 2), Right(x.Value, 2))
       x.NumberFormat = "yyyy/mm/dd"

答案 1 :(得分:1)

我认为这里有些混乱。在Excel中,日期存储为自1900年1月1日以来的天数。所以今天的日期是43062.这意味着您可以通过公式“= A1 + 7”将单元格中的任何日期添加7天。需要使用DATEADD函数几天。类似地,需要日期的函数不关心格式 - 它需要一个数值。因此,如果您的单元格保存日期,则只需添加7即可。

日期格式是您显示此数字的方式,可以是符号d,m和y的任意组合,并且可以使用范围的NumberFormat属性进行更改。

如果出现混淆,可以输入看起来像日期的文本,但实际上并不是日期。可以使用DATEVALUE函数将看起来像日期的字符串转换为日期,但仅当字符串符合已知的Excel日期格式时才能转换为日期。在您的情况下,格式YYYYMMDD是一种已知的格式,因此如果是文本,您可以在从前面切掉第一个字符后使用它。所以(假设单元格A1)这将把日期7天放入变量x:

    Dim r as Range
    Dim x as date
    Set r = range("a1")
    x = DateValue(right(r,len(r)-1))+7