如何创建VBA代码以根据另一列复制和选择值

时间:2019-05-29 20:04:57

标签: excel vba

我正在创建一个代码,其中A列,B列和C列必须位于不同的集合中。该代码必须检查C列是否为空。如果其不为空,则必须将A和B列复制到C的特定值所在的位置。

但是,在此数据集中,列c中有一些空格,并且在每个空格之后是一组必须遵循相同逻辑的不同数据。

example of data set

这是我到目前为止所拥有的:

Sub eliminaciones()

    Dim wrkSht As Worksheet
    Dim rFindCells As Range
    Dim rFillColumn As Range
    Dim sFirstAddress As String
    Dim rPrevious As Range

    Set wrkSht = Workbooks("BD eliminaciones.xls").Worksheets("BD eliminaciones")

    Set rFillColumn = wrkSht.Columns(3)

    With rFillColumn
        Set rFindCells = .Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlNext)
        If Not rFindCells Is Nothing Then
            sFirstAddress = rFindCells.Address
            Do
                Set rPrevious = rFindCells
                Set rFindCells = .FindNext(rFindCells)

                If rFindCells.Row <> rPrevious.Row + 1 And rFindCells.Row > rPrevious.Row Then
                    wrkSht.Range(rPrevious, rFindCells.Offset(-1)).FillDown
                End If

            Loop While rFindCells.Address <> sFirstAddress
        End If
    End With

End Sub

试图寻找相似的问题,但没有相似之处。没有代码在我想要的位置附近。

1 个答案:

答案 0 :(得分:0)

如果使用了准确的数据设置(已经分组在一起),那么您可以找到每个范围的第一行和最后一行,并输入值...未经测试的代码,但是可以给出一个主意:

for i = firstrowC to lastrowC
    if a = 0 then a = i
    if isblank(cells(i,3)) and b = 0 and a > 0 then b = i-1
    if a > 0 and b > 0 then 
        range(cells(a,1),cells(b,2)).value = range(cells(a,1),cells(a,2)).value
        a = 0
        b = 0
    end if
next i