VBA从空白单元格复制数据,如果为空,则在下一个数据停止时重复,然后重复

时间:2018-08-10 04:48:14

标签: vba

过去两天,我一直在阅读教程,以开始我在VBA中的旅程,并且需要一些帮助来解决当前的问题。我目前收到一个我无法访问的来自ACCESS数据库的报告,需要正确填充数据,以便我可以开始使用vlookups等,并(希望)创建一些自动化的时间表填充和计算。报告的格式不会改变,但是报告中的数据量会根据每天上班和下班的用户数量而改变。我已附上一张图像,显示了我的需求;我曾尝试自己做一些VBA,但除了困惑之外,我只是想适应任何地方而已。

有人可以帮助我吗? VBA工作表示例 enter image description here

2 个答案:

答案 0 :(得分:0)

将此代码复制到模块中并在工作表处于活动状态时运行它,或更改代码以完全引用存在以下工作表的工作表:set WS=... 代码背后的逻辑很简单,如果将date列填充为空,而date列之前为空白,则将值从上到下复制:

Sub FillBelowRows()
    Dim i As Integer
    Dim lRow As Integer
    Dim cell As Range
    Dim WS As Worksheet

    Set WS = ActiveSheet

    lRow = WS.UsedRange.Rows.Count

    For i = 3 To lRow
        If WS.Range("I" & i) <> "" And WS.Range("H" & i) = "" Then
            WS.Range("E" & i & ":H" & i).Value = WS.Range("E" & i - 1 & ":H" & i - 1).Value
        End If
    Next i

End Sub

答案 1 :(得分:0)

我设法解决了这一问题,方法是录制一个宏,然后通过一个按钮将其应用于多张纸上。记录的宏功能如下:

Select columns E:H
F5
Special
Select blank 
= and then up one cell using the arrow key 
ctrl + enter

阅读您发布的代码有助于我以全新的方式查看问题,非常感谢您的帮助。您可能会从我的解决方法中看出,我还是VBA的新手,但我热衷于学习。再次感谢!