![](/img/trans.png)
[英]VBA: How to delete a column based on the adjacent cell containing certain characters?
[英]How to delete blank characters before word in the cell for the column -VBA
因此,當前在B列中,有一些單元格之前沒有空格,但也有單元格。
例如:單元格B1只是“市場”,但是單元格B4,B5,B6,B10,B14等將具有“ _____ Total:”(__表示空白)
要刪除“總計:”之前的5個空格,我需要寫些什么?
我目前有:
mos = Range("B:B")
For Each x In mos
xv = x.Value
If Left(xv, 1) = "" Then xv = Right(xv, Len(xv) - 1)
Next xv
這給了我一個錯誤。
請讓我知道我該怎么辦。
謝謝!
Trim$
函數。 Trim
功能消除了多余的尾隨和前導空白。 Trim$
是類型函數,速度更快。 Intersect
意味着僅處理必要數量的行,而不是整個B列。 Option Explicit
放在代碼的頂部,以強制聲明變量並聲明變量。 並完全確定要使用的工作表。 LTrim$
只是從左側(字符串的開始)刪除,而RTrim$
只是從右側(字符串的結尾)刪除。 碼:
Option Explicit
Public Sub test()
Dim mos As Range
Dim x As Range
With ActiveSheet 'change to appropriate worksheetname
Set mos = .Range("B:B")
For Each x In Intersect(mos, .UsedRange)
x = Trim$(x)
Next x
End With
End Sub
獎金:
有許多現有的函數編寫為“干凈的”字符串,從而刪除了所有“多余的”空格字符,即僅保留了一個內部空格。
這是亨利·哈伯馬赫 ( Henry Habermacher)設計的一部
Public Function removeObsoleteWhiteSpace _
(FromString As Variant) As Variant
If IsNull(FromString) Then 'handle Null values
removeObsoleteWhiteSpace = Null
Exit Function
End If
Dim strTemp As String
strTemp = Replace(FromString, vbCr, " ")
strTemp = Replace(strTemp, vbLf, " ")
strTemp = Replace(strTemp, vbTab, " ")
strTemp = Replace(strTemp, vbVerticalTab, " ")
strTemp = Replace(strTemp, vbBack, " ")
strTemp = Replace(strTemp, vbNullChar, " ")
While InStr(strTemp, " ") > 0
strTemp = Replace(strTemp, " ", " ")
Wend
strTemp = Trim(strTemp)
removeObsoleteWhiteSpace = strTemp
End Function
示例調用:
Public Sub testing()
Debug.Print removeObsoleteWhiteSpace(" my string with a few spaces ")
End Sub
抱歉,沒有意識到您的循環只是刪除空格。
這是我修剪空間的方式:
Sub trim()
Dim mos As Range
Set mos = Range("B:B")
mos.Value = Application.trim(mos)
End Sub
為了避免循環,可以使用:
Dim myAddress As String
myAddress = "B1:B" & Cells(Rows.Count, 2).End(xlUp).Row
Range(myAddress) = Evaluate("IF(" & myAddress & "="""","""",TRIM(" & myAddress & "))")
也可以寫成:
With Range("B1", Cells(Rows.Count, 2).End(xlUp))
.Value = Evaluate("IF(" & .Address & "="""","""",TRIM(" & .Address & "))")
End With
或Replace()
方法:
Range("B1", Cells(Rows.Count, 2).End(xlUp)).Replace what:=" ", replacement:="", lookat:=xlPart
當然,以上所有解決方案均假定您在每個單元格內容的開頭僅具有多余的空格 ,否則它們也會修剪 (前兩個解決方案)或消除(第三個解決方案)其他空格
如果您實際上需要消除前導空格(第一個非空白字符之前的空格)並將所有其他空格留在原處,則必須循環並使用LTrim()
VBA函數:
Dim cell As Range
For Each cell In Range("B1", Cells(Rows.Count, 2).End(xlUp))
cell.Value = LTrim(cell.Value)
Next
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.