根据句号将行合并为一

时间:2019-04-04 07:35:57

标签: excel libreoffice-calc

我有一个以下格式的表。


所有


众所周知


请成为苹果。


abs kdjhkj kfhksh sh


kjsfhkshgkh dh。


我希望这些行基于句号合并,每当出现句号时,都应创建一个新行,直到发生下一个句号为止。 例子


所有以苹果闻名的


abs kdjhkj kfhksh sh kjsfhkshgkh dh。


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

3 个答案:

答案 0 :(得分:1)

我认为无法使用excel函数将其存档。我尝试创建满足您需求的代码:

代码:

if

结果:

enter image description here

答案 1 :(得分:0)

如果您只是将其导入到Google驱动器中,则可以执行以下操作:

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

您可以在excel中执行此操作,方法是以相同的方式使用串联,然后以“。”分隔。但据我所知,您不能以这种方式分裂。无论如何,在VBA中都不是困难的代码。但是我想您只是想解决这个问题,并且您正在使用excel来完成它,因为您不知道如何以其他任何方式来做到这一点。

答案 2 :(得分: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