Vba 如何使用VB或公式从excel单元格中删除换行符?

Vba 如何使用VB或公式从excel单元格中删除换行符?,vba,excel,Vba,Excel,我有许多单元格,其中数据被分成许多行;有些行是空白的。是否有VB函数或公式来删除Excel单元格中的空行符或所有换行符?在单元格中替换换行符似乎有效-=Substitute(A1,CHAR(10),”)在单元格中替换换行符似乎有效-=Substitute(A1,CHAR(10),”)如果不需要公式- 在数据右侧立即添加一个新列(触摸最后一列)。 在此列中插入数据最后一行的数字1、2、3等,指示数据的原始顺序 对除此新列之外的任何字段上的数据进行排序。 所有空白行将被排序到数据的顶部或底部。 删除

我有许多单元格,其中数据被分成许多行;有些行是空白的。是否有VB函数或公式来删除Excel单元格中的空行符或所有换行符?

在单元格中替换换行符似乎有效-
=Substitute(A1,CHAR(10),”)
在单元格中替换换行符似乎有效-
=Substitute(A1,CHAR(10),”)
如果不需要公式-

在数据右侧立即添加一个新列(触摸最后一列)。 在此列中插入数据最后一行的数字1、2、3等,指示数据的原始顺序

对除此新列之外的任何字段上的数据进行排序。 所有空白行将被排序到数据的顶部或底部。 删除所有连续的空行。 对添加的列进行排序以保留原始数据行顺序。
删除您添加的列。

如果不需要公式-

在数据右侧立即添加一个新列(触摸最后一列)。 在此列中插入数据最后一行的数字1、2、3等,指示数据的原始顺序

对除此新列之外的任何字段上的数据进行排序。 所有空白行将被排序到数据的顶部或底部。 删除所有连续的空行。 对添加的列进行排序以保留原始数据行顺序。
删除你添加的专栏。

我知道这篇文章很旧,但我找不到任何可以这样做的东西。因此,我最终将所有论坛中的信息汇总在一起

选择“单元格”或“范围”,这将删除左侧和右侧的所有换行符,并删除所有空行。然后把它修剪得好看。按你认为合适的方式改变。如果有兴趣,我还制作了一个删除所有换行符的程序。泰

    Sub RemoveBlankLines()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do
            If Left(strNewVal, 1) = vbLf Then strNewVal = Right(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            If Right(strNewVal, 1) = vbLf Then strNewVal = Left(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            strNewVal = Replace(strNewVal, vbLf & vbLf, "^")
            strNewVal = Replace(strNewVal, Replace(String(Len(strNewVal) - _
                        Len(Replace(strNewVal, "^", "")), "^"), "^", "^"), "^")
            strNewVal = Replace(strNewVal, "^", vbLf)

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If

        rngCel.Value = Application.Trim(rngCel.Value)
        End If
    Next rngCel
    Application.ScreenUpdating = True
End Sub
子删除空白行()
Application.ScreenUpdating=False
变暗rngCel As范围
Dim strOldVal作为字符串
作为字符串的Dim strNewVal
对于选择中的每个rngCel
如果rngCel.HasFormula=False,则
strOldVal=rngCel.值
strNewVal=strOldVal
调试.打印rngCel.地址
做
如果左(strNewVal,1)=vbLf,则strNewVal=右(strNewVal,Len(strNewVal)-1)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
做
如果Right(strNewVal,1)=vbLf,则strNewVal=Left(strNewVal,Len(strNewVal)-1)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
做
strNewVal=替换(strNewVal、vbLf和vbLf,“^”)
strNewVal=Replace(strNewVal,Replace)(字符串)_
Len(替换(strNewVal,“^”、“)、“^”)、“^”、“^”、“^”)、“^”)
strNewVal=替换(strNewVal,“^”,vbLf)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
如果rngCel.值strNewVal,则
rngCel=strNewVal
如果结束
rngCel.Value=Application.Trim(rngCel.Value)
如果结束
下一个rngCel
Application.ScreenUpdating=True
端接头
如果你只是想让所有的换行符消失,就用这个

    Sub RemoveLineBreaks()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do

            strNewVal = Replace(strNewVal, vbLf, " ")

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If
        End If
        rngCel.Value = Application.Trim(rngCel.Value)
    Next rngCel
    Application.ScreenUpdating = True
End Sub
Sub-RemoveLineBreaks()
Application.ScreenUpdating=False
变暗rngCel As范围
Dim strOldVal作为字符串
作为字符串的Dim strNewVal
对于选择中的每个rngCel
如果rngCel.HasFormula=False,则
strOldVal=rngCel.值
strNewVal=strOldVal
调试.打印rngCel.地址
做
strNewVal=替换(strNewVal,vbLf,“”)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
如果rngCel.值strNewVal,则
rngCel=strNewVal
如果结束
如果结束
rngCel.Value=Application.Trim(rngCel.Value)
下一个rngCel
Application.ScreenUpdating=True
端接头

我知道这篇文章很旧,但我找不到任何可以这样做的东西。因此,我最终将所有论坛中的信息汇总在一起

选择“单元格”或“范围”,这将删除左侧和右侧的所有换行符,并删除所有空行。然后把它修剪得好看。按你认为合适的方式改变。如果有兴趣,我还制作了一个删除所有换行符的程序。泰

    Sub RemoveBlankLines()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do
            If Left(strNewVal, 1) = vbLf Then strNewVal = Right(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            If Right(strNewVal, 1) = vbLf Then strNewVal = Left(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            strNewVal = Replace(strNewVal, vbLf & vbLf, "^")
            strNewVal = Replace(strNewVal, Replace(String(Len(strNewVal) - _
                        Len(Replace(strNewVal, "^", "")), "^"), "^", "^"), "^")
            strNewVal = Replace(strNewVal, "^", vbLf)

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If

        rngCel.Value = Application.Trim(rngCel.Value)
        End If
    Next rngCel
    Application.ScreenUpdating = True
End Sub
子删除空白行()
Application.ScreenUpdating=False
变暗rngCel As范围
Dim strOldVal作为字符串
作为字符串的Dim strNewVal
对于选择中的每个rngCel
如果rngCel.HasFormula=False,则
strOldVal=rngCel.值
strNewVal=strOldVal
调试.打印rngCel.地址
做
如果左(strNewVal,1)=vbLf,则strNewVal=右(strNewVal,Len(strNewVal)-1)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
做
如果Right(strNewVal,1)=vbLf,则strNewVal=Left(strNewVal,Len(strNewVal)-1)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
做
strNewVal=替换(strNewVal、vbLf和vbLf,“^”)
strNewVal=Replace(strNewVal,Replace)(字符串)_
Len(替换(strNewVal,“^”、“)、“^”)、“^”、“^”、“^”)、“^”)
strNewVal=替换(strNewVal,“^”,vbLf)
如果strNewVal=strOldVal,则退出Do
strOldVal=strNewVal
环
如果rngCel.值strNewVal,则
rngCel=strNewVal
如果结束
rngCel.Value=Application.Trim(rngCel.Value)
如果结束
下一个rngCel
Application.ScreenUpdating=True
端接头
如果你只是想让所有的换行符消失,就用这个

    Sub RemoveLineBreaks()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do

            strNewVal = Replace(strNewVal, vbLf, " ")

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If
        End If
        rngCel.Value = Application.Trim(rngCel.Value)
    Next rngCel
    Application.ScreenUpdating = True
End Sub
Sub-RemoveLineBreaks()
Application.ScreenUpdating=False
变暗rngCel As范围
暗淡的