Как я могу удалить пустые разрывы строк из ячейки Excel с помощью VB или формулы? - PullRequest
0 голосов
/ 23 февраля 2010

У меня много ячеек, в которых данные разбиты на множество строк; некоторые из этих строк пустые. Существует ли функция или формула VB для удаления пустых разрывов строк в ячейках Excel или всех разрывов строк?

Ответы [ 4 ]

6 голосов
/ 23 февраля 2010

Кажется, работает замена в ячейке для перевода строки - =Substitute(A1, CHAR(10), "")

1 голос
/ 25 августа 2017

Я знаю, что этот пост очень старый, но я не смог найти ничего, что могло бы сделать это. Итак, я наконец собрал это на всех форумах.

Выберите CELL или Range, и это удалит все разрывы строк слева и справа и удалит все пустые строки. Затем обрежьте все это, чтобы хорошо выглядеть. Переделай как хочешь. Я также сделал один, который удаляет все разрывы строк, если интересно. TY

    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

Если вы просто хотите, чтобы ВСЕ разрывы строк прекратились, используйте это.

    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
0 голосов
/ 20 марта 2018

Используйте формулу clean, например, = clean (A1). Это удаляет все непечатаемые символы и работает в версиях Excel для Mac.

0 голосов
/ 12 августа 2011

Если для этого не нужны формулы -

Добавьте новый столбец сразу справа от ваших данных (касаясь последнего столбца). Вставьте в этот столбец цифры 1, 2, 3 и т. Д. В последнюю строку ваших данных, указывая первоначальный порядок данных.

Сортировка данных по любому полю, кроме этого нового столбца. Все пустые строки будут отсортированы в верхней или нижней части данных. Удалите все смежные пустые строки. Сортируйте по столбцу, который вы добавили, чтобы сохранить исходный порядок строк данных. Удалить столбец, который вы добавили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...