分割/填充具有顶部和底部值的中间空白

时间:2016-01-25 22:36:37

标签: excel vba excel-vba

我有一个由for循环运行的列。它们之间有两行空格,当第一行触及另一行时(因为它检查值是否为"")它会停止。

看起来像这样:

-First person






-Second person

它应该是这样的:

-First person
-First person
-First person
-First person
-First person
-Second person
-Second person
-Second person
-Second person

代码:

Sub FyllUtKjoenn()
    Dim sluttrad As Integer
    sluttrad = Cells(3000, 1).End(xlUp).Row

    For x = 5 To sluttrad
        If Cells(x, 1).Value = "" Then
            Cells(x, 1).Value = Cells(x - 1, 1).Value

        End If
    Next x
End Sub

2 个答案:

答案 0 :(得分:1)

我认为你根本不需要循环;只是一点点数学。虽然您不会注意到工作表的一小部分,但是通过单个单元格循环的较大部分会降低您的速度。

Sub fill_Intermediate()
    Dim rw1 As Long, rw2 As Long

    With Worksheets("sheet5")
        rw1 = 5
        rw2 = .Cells(Rows.Count, 1).End(xlUp).Row
        'alternate
        'rw2 = .Cells(rw1, 1).End(xlDown).Row
        .Cells(rw1, 1).Resize(CLng((rw2 - rw1) / 2) + 1, 1).FillDown
        .Cells(rw2, 1).Offset(-CLng((rw2 - rw1) / 2) + 1, 0).Resize(CLng((rw2 - rw1) / 2), 1) = _
            .Cells(rw2, 1).Value
    End With
End Sub

first_second_person

答案 1 :(得分:0)

sluttrad始终为1,因此请更改sluttrad = Cells.Find(What:="*", After:=[A1], _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row 。试试

UPDATE Transaction t 
SET SubTotal = (SELECT SUM(UnitPrice * QuantitySold) FROM TransactionRecord tr WHERE tr.TransactionId = t.ID);