VBA搜索栏D中的“引用”;PM";如果找到,则在B列中添加12小时
不幸的是,我有一个具体的问题,我用谷歌搜索/拼凑VBA代码的能力只能走这么远 我正在从一个文本文件中导入一个报告,该文件中有显示30分钟间隔的列(请参见屏幕截图)。出于某种原因,12点以后的任何时间都会在B列显示为AM,但在D列中不会显示为AM。我正在尝试创建一个代码,在D列中搜索PM,并在B列中添加12小时,因此它最终显示为PM。我的尝试无效,我相信这是因为射程太远VBA搜索栏D中的“引用”;PM";如果找到,则在B列中添加12小时,vba,excel,Vba,Excel,不幸的是,我有一个具体的问题,我用谷歌搜索/拼凑VBA代码的能力只能走这么远 我正在从一个文本文件中导入一个报告,该文件中有显示30分钟间隔的列(请参见屏幕截图)。出于某种原因,12点以后的任何时间都会在B列显示为AM,但在D列中不会显示为AM。我正在尝试创建一个代码,在D列中搜索PM,并在B列中添加12小时,因此它最终显示为PM。我的尝试无效,我相信这是因为射程太远 非常感谢您的帮助 您可能希望在不循环的情况下尝试: Sub Minus30M() With Columns("D:D"
非常感谢您的帮助 您可能希望在不循环的情况下尝试:
Sub Minus30M()
With Columns("D:D")
.Replace What:="A", Replacement:=" A", LookAt:=xlPart
.Replace What:="P", Replacement:=" P", LookAt:=xlPart
End With
Range("D1").FormulaR1C1 = "=1/48"
Columns("D:D").Copy
Range("B1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("D1").Copy
Columns("B:B").PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract
Application.CutCopyMode = False
Selection.NumberFormat = "h:mm AM/PM"
End Sub
它不起作用,因为
12:00-12:30 PM
不是日期类型的对象。这是一根绳子。例如,你需要先从牢房中取出12:30 PM
。@ScottHoltzman什么是最好的方法,这样做有效!非常感谢你!你能解释一下你是怎么想的吗?我很想了解,这样我才能提高。
Sub Minus30M()
With Columns("D:D")
.Replace What:="A", Replacement:=" A", LookAt:=xlPart
.Replace What:="P", Replacement:=" P", LookAt:=xlPart
End With
Range("D1").FormulaR1C1 = "=1/48"
Columns("D:D").Copy
Range("B1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("D1").Copy
Columns("B:B").PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract
Application.CutCopyMode = False
Selection.NumberFormat = "h:mm AM/PM"
End Sub