【问题标题】:Excel VBA inserting missing datesExcel VBA插入缺少的日期
【发布时间】:2018-04-04 23:17:45
【问题描述】:

嗨,我对 vba 很陌生,我已经尝试了很长时间来解决这个问题,但似乎无法破解它。

我有一个包含几张工作表的工作簿,在偶数工作表中,a 列中有yyyy-mm-dd 格式的日期,b 列中有数据(它会有所不同)。

Excel 似乎无法将这些识别为日期,我需要使用一个公式来查找每张工作表中缺失的日期,然后插入一个包含缺失日期的新行(以及列的 b 到空白)那张纸很宽)。

我只是试图将日期转换为 mm/dd/yy 以便 Excel 至少将它们识别为日期而迷路了。

我的代码不是很好,但到目前为止我真的只知道如何遍历偶数页并插入空白列。

 Sub add_columns()
    Dim i As Integer
    Dim ws_num As Integer



    Dim starting_ws As Worksheet
    Set starting_ws = ActiveSheet
    ws_num = ThisWorkbook.Worksheets.Count

        For i = 2 To ws_num Step 2
                ThisWorkbook.Worksheets(i).Activate
                    Range("B1").EntireColumn.Insert
                    Range("B:D").EntireColumn.Insert

                 **For x = 2 to #ROWS in column B
                    cell.b"x" = MID(b"x",3,2) 
                    cell.c"x" = mid(a"x",6,2)
                    cell.d"x" = left(a"x",2)
                    cell.e"x" = c"x" / d"x" / b"x"
                 next**

        Next   
End Sub

星星之间的东西是我无法弄清楚的,这真的只会给我正确格式的日期,但即使这样也会有很大帮助。

之后我会尝试写一些东西来查看日期,确定一个单元格是否等于前一个加一,如果不插入新行,则使日期单元格等于前一个加一,再次检查等等。

谢谢

【问题讨论】:

  • Excel 应该在大多数语言环境中将该格式识别为日期。你的语言环境是什么?这些细胞中究竟是什么?您怎么知道 Excel 没有将其识别为日期?
  • 尝试使用 DateValue 函数将文本日期转换为实际日期。 DateValue("2018-04-01") 将为您提供 43191,您可以根据需要对其进行格式化。

标签: xml vba excel


【解决方案1】:

帮助您进行日期转换。您可以检查您的语言环境,并检查 DateValue 是否适合您。

关于使用字符串函数将日期转换为 'yyyy-mm-dd' 格式,您可以在 vba 中进行如下操作:

myDate = dateSerial(left("a" & x, 4),mid("a" & x, 6,2), mid("a" & x, 9,2))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-13
    • 2016-10-13
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    相关资源
    最近更新 更多