Microsoft Excel:将值跨行复制到一列

时间:2019-02-12 00:59:11

标签: excel vba excel-formula

鉴于电子表格的布局如下:

     A       B         C       D       E
    ---     ---       ---     ---     ---
  1 user1   1/1/18    1/1/17  1/1/16
  2 user2                     1/1/16  1/1/15
  3 user3             1/1/17
  4 user4                             1/1/15
  5 user5   12/31/18          9/8/16

如何从左到右扫描每一行,并将在B列之后检测到的FIRST列值复制到列B中,以便得到以下结果:

     A       B         C       D       E
    ---     ---       ---     ---     ---
  1 user1   1/1/18    1/1/17  1/1/16
  2 user2   1/1/16            1/1/16  1/1/15
  3 user3   1/1/17    1/1/17
  4 user4   1/1/15                    1/1/15
  5 user5   12/31/18          9/8/16

如果B列中已经有一个值,则该值必须保持不变。如上所述,列B中的所有其他值将是每一行扫描的结果。这些天我缺乏宏观技能,所以我愿意接受建议。

1 个答案:

答案 0 :(得分:1)

也许这样可以工作:

Sub MyCombine()
    With Sheet1
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

        Dim i As Long
        For i = 1 To lastRow
            If IsEmpty(.Cells(i, 2)) Then
                .Cells(i, 2).Value = .Cells(i, 2).End(xlToRight).Value
            End If
        Next i
    End With
End Sub