EXCEL 2010 MACRO连接包含不同行数的单元格

时间:2013-05-28 03:55:56

标签: excel excel-vba rows vba

我喜欢10个excel文件,每个文件超过10K行。

我想将已分解为不同行的描述字段连接起来。有些记录有两行,有些有3行,有些甚至每行有5行或6行!每条记录都有一行,带有唯一的代码或行号。

我尝试使用嵌套if函数,但在确定记录何时有4行或更多行时,它变得太复杂了。

该文件如下所示:


  A         B
CODIGO   DESCRIPCIÓN
R2 Dos Renglones 2R, Renglón Dos R3 Tres Renglones 3R, Renglón 2 3R, Renglón 3 R4 Cuatro Renglones 4R, Renglón 2 4R, Renglón 3 4R, Renglón 4 R5 Cinco Renglones 5R Renglón 2 5R Renglón 3 5R Renglón 4 5R Renglón 5 R21 Dos Renglones 2R, Renglón Dos R51 Cinco Renglones 5R Renglón 2 5R Renglón 3 5R Renglón 4 5R Renglón 5 R31 Tres Renglones 3R, Renglón 2 3R, Renglón 3

我可以使用一系列公式或宏来实现这些吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

试试这段代码:

Sub sample()


    Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row

    Dim CellA As String
    Dim CellB As String

    For i = 2 To lastRow
        CellA = IIf(Cells(i, 1) = "", CellA, Cells(i, 1))
        CellB = Cells(i, 2)
        Cells(i, 3) = CellA & " " & CellB
    Next
End Sub

enter image description here

更新了代码

Sub sample()


    Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row

    Dim firstCell As Boolean
    Dim dataCell As Range
    Dim strVal As String

    For i = 2 To lastRow

        If Cells(i, 1) <> vbNullString Then
begin:
            If firstCell = False Then
                Set dataCell = Cells(i, 1)
                firstCell = True

                strVal = vbNullString
                strVal = Cells(i, 2)

            Else

                Cells(dataCell.Row, 3) = strVal
                firstCell = False
                GoTo begin
            End If



        Else
            strVal = strVal & ", " & Cells(i, 2)
        End If


    Next

      Cells(dataCell.Row, 3) = strVal
End Sub

enter image description here