Excel格式化单元格

时间:2010-02-03 14:48:52

标签: .net excel vba excel-vba

我有一张表格,其日期末尾有额外的空格。我想删除它们,以便我可以将它们格式化为日期和排序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

4 个答案:

答案 0 :(得分: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

这将跳过任何公式,但除此之外它只会修剪范围内已有的公式。

答案 1 :(得分: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

这是你需要的吗?

答案 2 :(得分:0)

也许我误解了,但你不能只选择列,点击CTRL-H并用空格替换空格吗?

答案 3 :(得分: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