凌晨5:00 5:13 上午6:10 6:26 上午6:40 6:56 上午7:25 7:41 上午8:15 8:28 上午9:10 9:24 上午10:10 10:23上午 上午11:10 11:26上午 下午12:02 12:15 下午12:50 1:06 PM
我正在尝试创建一个宏,我需要将当前单元格中的单词AM或PM替换为没有AM和PM的时间,如果上面的单元格有AM或PM
例如,第一行中的时间保持不变,第二行中的行只显示6:10和6:26之类的时间,因为上面的单元格有AM。同样对于PM行也是如此。包含PM的第一行保持不变,但后面的行只显示数字。
我当前的代码是这样,它似乎没有工作..我的excel文件只是崩溃,必须重新启动EXCEL Required end table
'Remove additional AM and PM
Dim i as Long, j as Long
Dim celltxt as String
For i= 2 To 200
j=3
Do While j<50
celltxt = Cells(i-1,j).Text
If InStr( 1, celltext,("AM" Or "PM")) Then
Cells(i,j).Replace What:="AM" Or "PM", Replacement:=" ", SearchOrder:=xlByColumns, MatchCase:=True
Else
End If
Loop
Next i
End Sub
答案 0 :(得分:0)
我认为你需要尝试这段代码:
'Remove additional AM and PM
Dim i as Long, j as Long
Dim celltxt as String
For i= 2 To 200
For j = 3 To 49
celltxt = Cells(i-1,j).Text
If InStr( 1, celltext,("AM" Or "PM")) Then
Cells(i,j).Replace What:="AM" Or "PM", Replacement:=" ", SearchOrder:=xlByColumns, MatchCase:=True
Else
End If
Next j
Next i
End Sub
希望这个帮助
答案 1 :(得分:0)
1)你的代码崩溃,因为你没有增加内循环的计数器(j
),所以代码被困在一个无限循环中(当你使用调试器时很容易理解)< / p>
2)我认为替换不接受or
- 条款。相反,您必须发出2个单独的替换语句。
3)没有理由循环所有数据。您可以一次替换所有字符串(也许您必须调整范围的地址):
Dim r As Range
Set r = Range("C1:AW200")
r.Replace What:="AM", Replacement:="", LookAt:=xlPart, MatchCase:=False
r.Replace What:="PM", Replacement:="", LookAt:=xlPart, MatchCase:=False
4)也许更好的解决方案是从字符串中创建真实日期并正确格式化。
答案 2 :(得分:0)
我想我想出来了
'Remove additional AM and PM
For m = 100 To 2 Step -1
For n = 3 To 30
celltxt = Cells(m - 1, n).Text
If celltxt Like "*AM*" Then
Cells(m, n).Replace What:="AM", Replacement:=" "
Else
End If
Next n
Next m
For m = 100 To 2 Step -1
For n = 3 To 30
celltxt = Cells(m - 1, n).Text
If celltxt Like "*PM*" Then
Cells(m, n).Replace What:="PM", Replacement:=" "
Else
End If
Next n
Next m
For m = 100 To 2 Step -1
For n = 3 To 30
celltxt = Cells(m - 1, n).Text
If celltxt Like "*-*" Then
Cells(m, n).Replace What:="PM", Replacement:=" "
Else
End If
Next n
Next m
For m = 100 To 2 Step -1
For n = 3 To 30
celltxt = Cells(m - 1, n).Text
If celltxt Like "*-*" Then
Cells(m, n).Replace What:="AM", Replacement:=" "
Else
End If
Next n
Next m
End Sub