假設下面的Excel表:如何從每個Excel單元格中刪除前導空格?
| A
--+-----
1 |foo bar
2 | bar baz
3 | baz
4 | bam
我需要一種方法來自動刪除所有領先空間:
| A
--+-----
1 |foo bar
2 |bar baz
3 |baz
4 |bam
我無法找到一個Excel的功能來做到這一點。誰能幫我嗎?
假設下面的Excel表:如何從每個Excel單元格中刪除前導空格?
| A
--+-----
1 |foo bar
2 | bar baz
3 | baz
4 | bam
我需要一種方法來自動刪除所有領先空間:
| A
--+-----
1 |foo bar
2 |bar baz
3 |baz
4 |bam
我無法找到一個Excel的功能來做到這一點。誰能幫我嗎?
如果你想保持轉換值的單元格,以及在[return]
對之間的接話使用下面的代碼空間:
'DECLARE VARIABLES
Dim myRng As Range, c As Range
'INITIALIZE VARIABLES
Set myRng = Range("A1:A4")
'LOOP THRU RANGE
For Each c In myRng.Cells
'TRIM LEADING AND TRAILING SPACES
c.Value = LTrim(c.Value)
c.Value = RTrim(c.Value)
Next c
'ADD RETURN SPACE
myRng.Replace What:=" ", Replacement:=Chr(10), LookAt:=xlPart
使用=Trim(A1)
可以從字符串的任意一邊去除空白字符。
要使用換行符替換剩餘的空白字符,你可以使用=SUBSTITUTE(A1," ",[X])
其中[X]
是一個:
Char(10)
{作爲換行符}Char(13)
{回車符}Alt+Enter
手動將換行符插入Excel單元格中幫助參考
TRIM(text)
刪除文本中所有的空格,除了單詞之間的單個空格。
SUBSTITUTE(text, old_text, new_text, [instance_num])
以文本字符串替換new_text
爲old_text
。
您可以用數組的方式非常快速地完成下面避免了完全循環
雖然代碼有效地可以在一個單獨的長行中運行,但爲了清晰起見,我已將其分解出來。
這將更新單元格到原始範圍的右側。
Sub UpDateIt()
Dim rng1 As Range
Dim strText As String
strText = ","
Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
With Application
x = Replace(Replace(.Trim(Join(.Transpose(rng1), strText)), ", ", ","), Chr(32), Chr(10))
rng1.Offset(0, 1) = .Transpose(Split(x, strText))
End With
End Sub
+1爲高效的代碼。 – Taliesin 2013-03-05 18:58:36
Excel確實有'TRIM'功能,但它刪除所有前導,尾隨和多餘的空間... – luiges90 2013-02-28 13:25:48
謝謝。我現在在單元格'B1'中應用公式'= TRIM(A1)',並將其擴展到列的下方。在第二個音符上,你知道我怎麼可以用[返回]替換第一個空格(在刪除前導空格後)?所以它變成'foo [return] bar'例如? – Pr0no 2013-02-28 13:38:08
如果您擔心刪除多餘空間,可以使用VBA中的RTrim和LTrim創建自己的函數。 – 2013-02-28 13:41:10