2010-02-03 319 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