基于句号将行合并为一个

问题描述 投票:0回答:3

我有一个表格,格式如下。


一切都是


众所周知的


让我们成为苹果。


abs kdjhkj kfhksh sh


像一只羊。


我希望行根据完全停止进行合并,每当完整停止时,应创建一个新行,直到下一个完全停止发生。例


众所周知的是苹果。


ABS无现金贷款


我看到我们可以使用inbuild工具将n行合并为一行。但我有一个巨大的清单,我不能四处走动,为每一套做到这一点。任何解决方案,代码或通过excel或libreoffice calc都会有所帮助。虽然我可以尝试宏但不喜欢它。无论如何,如果这是实现它的唯一方法,那么为什么不呢。

excel libreoffice-calc
3个回答
1
投票

我认为没有办法用excel函数存档它。我尝试创建满足您需求的代码:

码:

Option Explicit

Sub test()

    Dim str As String
    Dim i As Long, LastRowA As Long, LastRowC As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastRowA

            If InStr(1, .Range("A" & i).Value, ".") > 0 Then

                If str = "" Then
                    str = .Range("A" & i).Value
                Else
                    str = str & " " & .Range("A" & i).Value
                End If

                LastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row

                If LastRowC = 1 And .Range("C1").Value = "" Then
                    .Range("C" & LastRowC).Value = str
                Else
                    .Range("C" & LastRowC + 1).Value = str
                End If

                str = ""

            Else

                If str = "" Then
                    str = .Range("A" & i).Value
                Else
                    str = str & " " & .Range("A" & i).Value
                End If

            End If

        Next i

    End With

End Sub

结果:

enter image description here


0
投票

如果您只是在Google云端硬盘中导入它,则可以执行以下操作:

= SPLIT(CONCATENATE(A1:A5); “”)

你可以在excel中以相同的方式使用连接,然后用“。”分隔。但我不认为你不能以这种方式分裂我的知识。无论如何,在VBA中并不是一个困难的代码。但我想你只是想解决这个问题而且你是在excel中做到这一点,因为你不知道如何以其他任何方式做到这一点。


0
投票

与第一个答案相比,下面的代码是有效的。

    Sub Program1()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim Lastrow As Long
    Dim Str1 As String
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Sheet1")

    Lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    j = 1
    For i = 1 To Lastrow
        If InStr(1, ws.Cells(i, 1).Value, ".") > 0 Then
            ws.Cells(j, 3).Value = Str1 & ws.Cells(i, 1).Value
            j = j + 1
            Str1 = ""
        Else
            Str1 = Str1 & ws.Cells(i, 1).Value
        End If
    Next
   End Sub
© www.soinside.com 2019 - 2024. All rights reserved.