Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA搜索栏D中的“引用”;PM";如果找到,则在B列中添加12小时_Vba_Excel - Fatal编程技术网

VBA搜索栏D中的“引用”;PM";如果找到,则在B列中添加12小时

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"

不幸的是,我有一个具体的问题,我用谷歌搜索/拼凑VBA代码的能力只能走这么远

我正在从一个文本文件中导入一个报告,该文件中有显示30分钟间隔的列(请参见屏幕截图)。出于某种原因,12点以后的任何时间都会在B列显示为AM,但在D列中不会显示为AM。我正在尝试创建一个代码,在D列中搜索PM,并在B列中添加12小时,因此它最终显示为PM。我的尝试无效,我相信这是因为射程太远


非常感谢您的帮助

您可能希望在不循环的情况下尝试:

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