2010-02-23 2 views
0

데이터가 여러 줄로 나뉘는 많은 셀이 있습니다. 그 중 일부는 비어 있습니다. VB 함수 또는 Excel 셀의 빈 줄 바꿈 또는 모든 줄 바꿈을 제거하는 수식이 있습니까? 데이터의 오른쪽 (마지막 열 접촉)에 즉시 새 열을 추가VB 또는 수식이있는 Excel 셀에서 빈 줄 바꿈을 제거하려면 어떻게합니까?

-이 수식이 필요하지 않는 경우 =Substitute(A1, CHAR(10), "")

+0

가능한 중복 [엑셀 : 내가 셀에서 모든 캐리지 리턴을 제거 어떻게 (http://stackoverflow.com/questions/3860184/excel-how-do-i-remove-all-carriage -returns-from-a-cell) –

답변

6

대체가 작동하는 것 같다. 숫자 1, 2, 3 등을 데이터의 마지막 행에 삽입하여 데이터의 원래 순서를 나타냅니다.

이 새 열을 제외한 모든 필드에서 데이터를 정렬하십시오. 모든 빈 행이 데이터의 상단 또는 하단으로 정렬됩니다. 인접한 모든 빈 행을 삭제하십시오. 원래 데이터 행 순서를 유지하기 위해 추가 한 열을 정렬하십시오. 추가 한 열을 삭제하십시오.

+2

줄 바꿈뿐만 아니라 Char (13) (즉 return)도 포함될 수 있습니다. 일반적인 순서는 Char (13) + Char (10)이지만 그 반대의 경우도 가능합니다. – Fionnuala

+2

@Remou가 옳습니다. 이것을 막으려면'= Substitute (A1, CHAR (10), "", CHAR (13), "")를 사용하십시오. –

1

이 게시물은 매우 오래된 것으로 알고 있지만이를 수행 할만한 것을 찾을 수 없습니다. 그래서 나는 마침내이 포럼을 모든 포럼에서 모았습니다.

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 
관련 문제