2

我有 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

是否有一系列公式或宏可以用来实现这些?

提前致谢。

4

1 回答 1

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

在此处输入图像描述

更新代码

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

在此处输入图像描述

于 2013-05-28T05:43:46.137 回答