Vba 删除选定单元格中的空行
我试图从excel中的单元格中仅删除空行。以下是我想说的:Vba 删除选定单元格中的空行,vba,excel,Vba,Excel,我试图从excel中的单元格中仅删除空行。以下是我想说的: +-----------------+ +---------------------+ +---------------------+ | EXAMPLE DATA | | EXPLANATION | | EXPECTED RESULT | +-----------------+ +---------------------+ +---------------------
+-----------------+ +---------------------+ +---------------------+
| EXAMPLE DATA | | EXPLANATION | | EXPECTED RESULT |
+-----------------+ +---------------------+ +---------------------+
| cell1_text1 | | cell1_text1 | | cell1_text1 |
| cell1_text2 | | cell1_text2 | | cell1_text2 |
+-----------------+ +---------------------+ +---------------------+
| | | cell2_empty_line | | cell2_text1 |
| cell2_text1 | | cell2_text1 | +---------------------+
+-----------------+ +---------------------+ | cell3_text1 |
| cell3_text1 | | cell3_text1 | | cell3_text2 |
| | | cell3_emptyline | +---------------------+
| cell3_text2 | | cell3_text2 | | cell4_text1 |
+-----------------+ +---------------------+ +---------------------+
| | | cell4_emptyline | | cell5_text1 |
| | | cell4_emptyline | +---------------------+
| cell4_text1 | | cell4_text1 | | cell6_text1 |
+-----------------+ +---------------------+ | cell6_text2 |
| cell5_text1 | | cell5_text1 | | cell6_text3 |
+-----------------+ +---------------------+ | cell6_text4 |
| cell6_text1 | | cell6_text1 | +---------------------+
| cell6_text2 | | cell6_text2 |
| cell6_text3 | | cell6_text3 |
| | | cell6_emptyline |
| cell6_text4 | | cell6_text4 |
+-----------------+ +---------------------+
我有:
如何测试行是否不包含任何其他字母,并仅删除单元格中的该行?
如何仅将该宏应用于当前选定的单元格?这样可以:
与其替换回车符,不如在回车符上拆分,然后循环并仅用具有值的项替换该值
Sub RemoveCarriageReturns()
Dim MyRange As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each MyRange In ActiveSheet.UsedRange
Dim textArr() As String
textArr = Split(MyRange.Value, Chr(10))
MyRange.Value = ""
For i = LBound(textArr) To UBound(textArr)
If textArr(i) <> "" Then
If MyRange.Value = "" Then
MyRange.Value = textArr(i)
Else
MyRange.Value = MyRange.Value & Chr(10) & textArr(i)
End If
End If
Next i
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub-RemoveCarriageReturns()
将MyRange变暗为Range
Application.ScreenUpdating=False
Application.Calculation=xlCalculationManual
对于ActiveSheet.UsedRange中的每个MyRange
Dim textArr()作为字符串
textArr=Split(MyRange.Value,Chr(10))
MyRange.Value=“”
对于i=LBound(textArr)到UBound(textArr)
如果textArr(i)“,则
如果MyRange.Value=”“,则
MyRange.Value=textArr(i)
其他的
MyRange.Value=MyRange.Value&Chr(10)&textArr(i)
如果结束
如果结束
接下来我
下一个
Application.ScreenUpdating=True
Application.Calculation=xlCalculationAutomatic
端接头
这样就可以了:
与其替换回车符,不如在回车符上拆分,然后循环并仅用具有值的项替换该值
Sub RemoveCarriageReturns()
Dim MyRange As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each MyRange In ActiveSheet.UsedRange
Dim textArr() As String
textArr = Split(MyRange.Value, Chr(10))
MyRange.Value = ""
For i = LBound(textArr) To UBound(textArr)
If textArr(i) <> "" Then
If MyRange.Value = "" Then
MyRange.Value = textArr(i)
Else
MyRange.Value = MyRange.Value & Chr(10) & textArr(i)
End If
End If
Next i
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub-RemoveCarriageReturns()
将MyRange变暗为Range
Application.ScreenUpdating=False
Application.Calculation=xlCalculationManual
对于ActiveSheet.UsedRange中的每个MyRange
Dim textArr()作为字符串
textArr=Split(MyRange.Value,Chr(10))
MyRange.Value=“”
对于i=LBound(textArr)到UBound(textArr)
如果textArr(i)“,则
如果MyRange.Value=”“,则
MyRange.Value=textArr(i)
其他的
MyRange.Value=MyRange.Value&Chr(10)&textArr(i)
如果结束
如果结束
接下来我
下一个
Application.ScreenUpdating=True
Application.Calculation=xlCalculationAutomatic
端接头
您需要定位并删除错误的换行符(例如vbLF、Chr(10)
或ASCII 010 dec)。如果数据是从外部源复制的,则流氓回车字符(例如vbCR或Chr(13)
)可能会有背驮,也应清除这些字符
Sub clean_blank_lines()
Dim rw As Long
With Worksheets("Sheet3") '<~~SET THIS WORKSHEET REFERENCE PROPERLY!
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
With .Cells(rw, 1)
.Value = Replace(.Value2, Chr(13), Chr(10))
Do While Left(.Value2, 1) = Chr(10): .Value = Mid(.Value2, 2): Loop
Do While CBool(InStr(1, .Value, Chr(10) & Chr(10)))
.Value = Replace(.Value2, Chr(10) & Chr(10), Chr(10))
Loop
Do While Right(.Value2, 1) = Chr(10): .Value = Left(.Value2, Len(.Value2) - 1): Loop
End With
.Rows(rw).EntireRow.AutoFit
Next rw
End With
End Sub
Sub clean_blank_line()
变暗rw为长
使用工作表(“Sheet3”)时,您需要查找并删除错误的换行符(例如vbLF、Chr(10)
或ASCII 010 dec)。如果数据是从外部源复制的,则流氓回车字符(例如vbCR或Chr(13)
)可能会有背驮,也应清除这些字符
Sub clean_blank_lines()
Dim rw As Long
With Worksheets("Sheet3") '<~~SET THIS WORKSHEET REFERENCE PROPERLY!
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
With .Cells(rw, 1)
.Value = Replace(.Value2, Chr(13), Chr(10))
Do While Left(.Value2, 1) = Chr(10): .Value = Mid(.Value2, 2): Loop
Do While CBool(InStr(1, .Value, Chr(10) & Chr(10)))
.Value = Replace(.Value2, Chr(10) & Chr(10), Chr(10))
Loop
Do While Right(.Value2, 1) = Chr(10): .Value = Left(.Value2, Len(.Value2) - 1): Loop
End With
.Rows(rw).EntireRow.AutoFit
Next rw
End With
End Sub
Sub clean_blank_line()
变暗rw为长
对于工作表(“Sheet3”)“您只有一个在-----------行之间移动值,对吗?您只有一个在------行之间移动值,对吗?”?