EXCEL VBA – 循环遍历一行中的单元格,如果不为空,则将单元格值复制到另一行,直到下一行不为空

我正在考虑编写一些代码来复制下一行的数据,直到下一行不是空的。 假设第1行中的所有内容都是标题。

数据如下所示:

A2 ClientA B2 Product1 C2 Price D2 Quantity E2 Cost A3 B3 C3 Price D3 Quantity E3 Cost A4 B4 C4 Price D4 Quantity E4 Cost A5 ClientB B5 Product2 C5 Price D5 Quantity E5 Cost A6 B6 C6 Price D6 Quantity E6 Cost A7 ClientC B7 Product3 C7 Price D7 Quantity E7 Cost A8 B8 C8 Price D8 Quantity E8 Cost A9 B9 C9 Price D9 Quantity E9 Cost 

A3和A4将填写客户A,B3和B4将填写产品,直到下一行不为空。

我已经search了一个类似的问题,但我不知道如何写它。

EXCEL VBA – 循环列中的单元格,如果不为空,则将单元格值打印到另一列中

最终结果将如下所示:

  A2 ClientA B2 Product1 C2 Price D2 Quantity E2 Cost A3 ClientA B3 Product1 C3 Price D3 Quantity E3 Cost A4 ClientA B4 Product1 C4 Price D4 Quantity E4 Cost A5 ClientB B5 Product2 C5 Price D5 Quantity E5 Cost A6 ClientB B6 Product2 C6 Price D6 Quantity E6 Cost A7 ClientC B7 Product3 C7 Price D7 Quantity E7 Cost A8 ClientC B8 Product3 C8 Price D8 Quantity E8 Cost A9 ClientC B9 Product3 C9 Price D9 Quantity E9 Cost 

任何人都知道什么是VBA代码?

没有VBA需要这个。

把这个公式写在帮助栏中: =IF(ISBLANK(A2),F1,A2)

假设帮助列在F列中,将其拖到数据集中,然后将这些值复制到原始列中。 重复B列。

你需要:

  • 工作表名称:您想要处理的工作表的名称

  • arColumns = Array(“A”,2,3):将要填充的列号或字母添加到此数组中


 Sub FillRows()
     Const SheetName As String =“Sheet3”

     Dim lastRow As Long,x As Long,y
    昏暗的arColumns
     arColumns = Array(“A”,2,3)

    使用工作表(SheetName)
         lastRow = .Rows(Rows.Count).End(xlUp).Row
        对于x = 3 To lastRow
            对于y = 0到UBound(arColumns)
                如果IsEmpty(.Cells(x,arColumns(y)).value).Cells(x,arColumns(y))。value = .Cells(x  -  1,arColumns(y))。value

            下一个
        下一个

    结束

结束小组

如果你想使用VBA,你可以使用这个。

我不知道你是如何find最后一行的数据,所以我提供了一个variables,你可以改变自己,它对应的行。 使用Z的第一个For循环将遍历列A(1)和列B(2),在这个循环内我们有另一个For循环遍历单元格,如果单元格值为“”,则input最后一个可见值。

 Sub LoopFill() Dim LastEntry As String, LastRow As Integer LastRow = 25 For Z = 1 To 2 LastEntry = "" For i = 1 To LastRow If Cells(i, Z).Value = "" Then Cells(i, Z).Value = LastEntry LastEntry = Cells(i, Z).Value Next i Next Z End Sub 

这是另一种不使用VBA的方法。

  1. select空白(CTRL + G,单击特殊,select空白,确定)
  2. 在公式栏中,键入=(CELL直接高于第一个空格)例如:如果A2空白,= A1
  3. 按住CTRL键,按回车将公式提交到所有空白单元格。
  4. select范围,根据需要复制和粘贴值以删除公式。
  5. 如果您不粘贴值,并尝试进行sorting或过滤,数据将是错误的