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