2010-02-03 158 views
1

我有一張表格,其末尾有額外的空格。我想刪除它們,以便我可以格式化它們作爲日期和排序Excel表。 我用網上提供的前宏:Excel格式化單元格

Sub TrimColumnA() 
    Dim rng As Range 
    On Error Resume Next ''#if entire column is blank, exit sub 
    Set rng = Intersect(Range("B1").EntireColumn, ActiveSheet.UsedRange) 
    rng.Value = Evaluate("IF(ROW(" & rng.Address & "),IF(" & rng.Address & _ 
    "<>"""",TRIM(" & rng.Address & "),""""))") 
End Sub 

我也嘗試過其他的宏,它的工作原理,並刪除空格,但我必須雙擊每個單元格,然後它們格式化爲日期。我如何避免點擊並直接刪除空間並將其格式化爲日期。

譯本Excel 2007中

+0

你發佈的宏代碼有什麼問題? – 2010-02-03 15:14:57

+0

它工作正常,但excel單元格值,當我選擇他們和應用日期格式,他們不會改變,但一旦我點擊進入單元格後,他們改變。所以我不知道爲什麼它需要雙擊來格式化自己 – 2010-02-03 19:43:32

回答

0

我用下面的代碼,並改變它,它是爲我的方案工作。謝謝大家的回覆和時間

Sub RemoveTrailing() 
'Code removes leading and trailing spaces (both ASCII 32 and 160) from a selected range of cells 
Dim cel As Range, rg As Range 
Application.ScreenUpdating = False 
Set rg = Intersect(Selection, ActiveSheet.UsedRange) For Each cel In rg 
    If Not IsError(cel) Then 
     If cel <> "" Then cel.Value = Trim(Application.Substitute(cel.Value, Chr(160), " ")) 
    End If 
Next cel 
Application.ScreenUpdating = True 
End Sub 
0

所以,你想要做的就是選擇修剪它們,這樣的格式將生效後的細胞?如果是這樣的話,我已經在一列數據中使用了這個過程,當我在列的頂部時,我開始了這個宏,並且只要單元格中有東西,我就想停下來。

Sub Double_Click_Cells() 
Dim iOS As Integer 

    Application.Calculation = xlCalculationManual 
    iOS = 0 
    While Not IsEmpty(ActiveCell.Offset(iOS)) 
    ActiveCell.Offset(iOS).Formula = ActiveCell.Offset(iOS).Formula 
    iOS = iOS + 1 
    Wend 
    Application.Calculation = xlCalculationAutomatic 

End Sub 

這是你需要的嗎?

1

我不認爲你在乎細胞是否爲空。也許對於速度的考慮,但前提是你使用TRS80

Sub MakeDates() 

    Dim rCell As Range 

    For Each rCell In Intersect(ActiveSheet.Columns(2), ActiveSheet.UsedRange).Cells 
     If Not rCell.HasFormula Then 
      rCell.Value = Trim(rCell.Value) 
     End If 
    Next rCell 

End Sub 

這將跳過任何公式,但除此之外,它只是修剪什麼的已經在範圍內。

0

也許我誤解了,但是不能只是選擇列,按CTRL-H並用空格替換空格?

+0

您可能在單元格值的中間有空格,而它似乎只是單元格值末尾的空格需要修剪 – barrowc 2010-02-05 10:31:36

+0

不夠公平。因爲他想排序,所以我假設列中有一致的數據。 – 2010-02-05 17:24:50