Excel 删除单元格中的部分文本,保留其他文本
`2020年4月19日下午6:00:00-这是电池内部的内容。我想删除“6:00:00 PM”部分,但我能找到的唯一功能是.REPLACE函数,它只会删除整个单元格并将其变为空白。每个单元格都有不同的日期,所以我不能每次都用相同的日期替换Excel 删除单元格中的部分文本,保留其他文本,excel,vba,Excel,Vba,`2020年4月19日下午6:00:00-这是电池内部的内容。我想删除“6:00:00 PM”部分,但我能找到的唯一功能是.REPLACE函数,它只会删除整个单元格并将其变为空白。每个单元格都有不同的日期,所以我不能每次都用相同的日期替换 With Columns("E:E") .Replace What:="?*:00:00 PM=", Replacement:="?*:00:00 PM " .Replace What:="?*:00:00 PM", Replacement:="" End W
With Columns("E:E")
.Replace What:="?*:00:00 PM=", Replacement:="?*:00:00 PM "
.Replace What:="?*:00:00 PM", Replacement:=""
End With
With Columns("H:H")
.Replace What:="?*:00:00 PM=", Replacement:="?*:00:00 PM "
.Replace What:="?*:00:00 PM", Replacement:=""
End With
使用该函数
这个答案将在第4列(“D”)中找到最后一行,并从第1行循环到lRow(最后一行),按定义格式化每个单元格
Sub test()
Dim rng As Range, cell As Range
Dim lRow As Long
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Worksheets("Data")
lRow = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row
Set rng = Range(Cells(1, 4), Cells(lRow, 4))
For Each cell In rng
cell = Format(cell, "dd/mm/yyyy")
Next cell
End Sub
如果列E中的值为真实日期/时间,则运行:
Sub dropTime()
With Range("E:E").Cells
.NumberFormat = "m/d/yyyy "
End With
End Sub
Sub dropTime2()
Dim rng As Range, r As Range, arr
Set rng = Intersect(Range("E:E"), ActiveSheet.UsedRange)
For Each r In rng
arr = Split(r.Text, " ")
If UBound(arr) = 2 Then
r.Value = arr(0)
r.NumberFormat = "m/d/yyyy "
End If
Next r
End Sub
如果列E中的值是文本值,则运行:
Sub dropTime()
With Range("E:E").Cells
.NumberFormat = "m/d/yyyy "
End With
End Sub
Sub dropTime2()
Dim rng As Range, r As Range, arr
Set rng = Intersect(Range("E:E"), ActiveSheet.UsedRange)
For Each r In rng
arr = Split(r.Text, " ")
If UBound(arr) = 2 Then
r.Value = arr(0)
r.NumberFormat = "m/d/yyyy "
End If
Next r
End Sub
比我的回答更清楚。我将保留我的,因为它的工作,并显示了一个替代的解决方案,但这应该是选定的答案。所以,在我的VBA中,我已经使用单元格作为另一个部分的范围。所以它给了我一个“编译错误:对于已经在使用的控制变量”。有没有办法解决这个问题?你可以调用
cell
其他东西<例如,代码>单元格2。