VBA合并excel中的单元格

时间:2013-11-11 18:42:17

标签: excel excel-vba excel-2007 excel-formula vba

我有一张excel表,如下所示。将sno列视为Excel编号。 因此,除了DateTime之外的所有列都被合并。我想合并DateTime单元格,并希望删除空记录。我尝试了一些没有成功的公式。这可能吗

我尝试了下面的公式,但它给出了奇怪的结果,我想是日期时间值。

=INDEX($A$1:$A$<ENDROW>,(B1-1)*2+1,1)&" "&INDEX($A$1:$A$<ENDROW>,(B1-1)*2+2,1)

我有这个:

╔═════╦════════╦══════════╦═════════╦═════════════╗
║ sno ║ Action ║ DateTime ║ User ID ║    Name     ║
╠═════╬════════╬══════════╬═════════╬═════════════╣
║   1 ║ INSERT ║ 8-Nov-13 ║ childsk ║ Keri Childs ║
║   2 ║        ║ 16:06:43 ║         ║             ║
║   3 ║ INSERT ║ 8-Nov-13 ║ childsk ║ Keri Childs ║
║   4 ║        ║ 16:04:27 ║         ║             ║
╚═════╩════════╩══════════╩═════════╩═════════════╝

预期输出:

╔═════╦════════╦═══════════════════╦═════════╦═════════════╗
║ sno ║ Action ║     DateTime      ║ User ID ║    Name     ║
╠═════╬════════╬═══════════════════╬═════════╬═════════════╣
║   1 ║ INSERT ║ 8-Nov-13 16:06:43 ║ childsk ║ Keri Childs ║
║   2 ║ INSERT ║ 8-Nov-13 16:04:27 ║ childsk ║ Keri Childs ║
╚═════╩════════╩═══════════════════╩═════════╩═════════════╝

1 个答案:

答案 0 :(得分:0)

您有两项任务要执行。

  1. 将日期和时间合并到单个单元格中。这只是通过(单元格C1包含B1中使用的公式(作为文本)完成的。) enter image description here

    并将B1格式化为自定义 - &gt; d-mmm-yy hh:mm:ss。

    然后,您可以将结果(作为值)和格式复制到目标列。

  2. 删除额外的行。您可以使用下面的代码(确保将重复次数从10更改为您需要的任何内容)。

  3. Sub del_skip_rows_repeat_caller()
        Call del_skip_rows_repeat(1, 10)
    End Sub
    Sub del_skip_rows_repeat(nrows As Integer, nrep As Integer)
        Dim i As Integer
        For i = 1 To nrep
          Call del_skip_rows(nrows)
        Next i
    End Sub
    Sub del_skip_rows(nrows As Integer)
        Dim rng As Range
        Set rng = Range(Selection, Selection.Offset(nrows - 1, 0)).EntireRow
        'rng.Select
        rng.Delete Shift:=xlUp
        Set rng = Selection.Offset(1, 0).Cells(1, 1)
        rng.Select
    End Sub