Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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使用公式计算行,并将答案作为值粘贴到另一行中_Vba_Excel_Formula - Fatal编程技术网

VBA使用公式计算行,并将答案作为值粘贴到另一行中

VBA使用公式计算行,并将答案作为值粘贴到另一行中,vba,excel,formula,Vba,Excel,Formula,现在我使用下面的代码在给定的日期范围内按小时生成所有日期。在这之后,第16行中的公式被复制到第18行,然后每个公式被自动填充到第А列中的最后一个日期。公式中使用了日期。代码运行良好,但一次计算和更新所有公式的速度非常慢。我想问题是因为第17行之后的每个单元格都是一个公式。所以现在我想知道是否有一种方法可以编辑代码,按每个时间间隔计算第16行中的每个公式,并将结果作为值从第18行复制到a列中最后一行的日期 Option Explicit Sub TEST() 'Updated on 02-10-2

现在我使用下面的代码在给定的日期范围内按小时生成所有日期。在这之后,第16行中的公式被复制到第18行,然后每个公式被自动填充到第А列中的最后一个日期。公式中使用了日期。代码运行良好,但一次计算和更新所有公式的速度非常慢。我想问题是因为第17行之后的每个单元格都是一个公式。所以现在我想知道是否有一种方法可以编辑代码,按每个时间间隔计算第16行中的每个公式,并将结果作为值从第18行复制到a列中最后一行的日期

Option Explicit
Sub TEST()
'Updated on 02-10-2017
Application.Calculation = xlManual
    Application.StatusBar = "Getting Daily Results...."
    Application.ScreenUpdating = False
ActiveSheet.Rows(18 & ":" & ActiveSheet.Rows.Count).ClearContents
Rows("16:16").Copy Destination:=Rows("18:18")
Range("A18", Range("A18").End(xlDown)).Clear
Dim rng As Range
Dim StartRng As Range
Dim EndRng As Range
Dim OutRng As Range
Dim IntvlHrsRng As Range
Dim IntvlHrs As Long
Dim StartValue As Variant
Dim EndValue As Variant
Const xTitleId As String = "KutoolsforExcel"
Dim ColIndex As Long
Dim I As Long
Dim ic As Long
Dim LastRow As Long
Dim LastRowDB As Long
Set StartRng = Application.Selection
Set StartRng = Range("B3")
Set EndRng = Range("B4")
Set IntvlHrsRng = Range("B5")
Set OutRng = Range("A18")
Set OutRng = OutRng.Range("A1")
StartValue = StartRng.Range("A1").Value
EndValue = EndRng.Range("A1").Value
IntvlHrs = IntvlHrsRng.Range("A1").Value
    If IntvlHrs = 0 Then IntvlHrs = 24

If EndValue - StartValue <= 0 Then
    Exit Sub
    End If
    ColIndex = 0

    For I = StartValue * 24 To EndValue * 24 Step IntvlHrs
        OutRng.Offset(ColIndex, 0) = I / 24
        OutRng.Offset(ColIndex, 0).NumberFormat = "dd/mm/yyyy hh:mm"
        ColIndex = ColIndex + 1
    Next I

LastRow = Range("A" & Rows.Count).End(xlUp).Row
LastRowDB = Range("C" & Rows.Count).End(xlUp).Row

If LastRowDB >= LastRow Then
    Exit Sub
    End If

For ic = 2 To 99

    Cells(LastRowDB, ic).AutoFill Destination:=Range(Cells(LastRowDB, ic), Cells(LastRow, ic))

Next ic

ActiveSheet.Calculate
    Application.StatusBar = "Ready"
    Application.ScreenUpdating = True
End Sub
选项显式
子测试()
'于2017年10月2日更新
Application.Calculation=xlManual
Application.StatusBar=“获取每日结果…”
Application.ScreenUpdating=False
ActiveSheet.Rows(18&“:”&ActiveSheet.Rows.Count).ClearContents
行(“16:16”)。复制目标:=行(“18:18”)
范围(“A18”,范围(“A18”)。结束(xlDown))。清除
变暗rng As范围
暗启动As范围
Dim EndRng As范围
变暗范围
Dim IntvlHrsRng As范围
暗整数和长整数一样
Dim StartValue作为变量
作为变量的Dim EndValue
Const xTitleId As String=“KutoolsforExcel”
Dim ColIndex等长
我想我会坚持多久
如长
最后一排一样长
将LastRowDB设置为长
设置StartRng=应用程序。选择
设置StartRng=范围(“B3”)
设置EndRng=范围(“B4”)
设置IntvlHrsRng=范围(“B5”)
放样RNG=范围(“A18”)
放线量=放线量范围(“A1”)
起始值=起始范围(“A1”)值
EndValue=EndRng.范围(“A1”).值
IntvlHrs=IntvlHrsRng.范围(“A1”).值
如果IntvlHrs=0,则IntvlHrs=24
如果EndValue-StartValue=LastRow,则
出口接头
如果结束
对于ic=2至99
单元格(LastRowDB,ic)。自动填充目标:=范围(单元格(LastRowDB,ic),单元格(LastRow,ic))
下一代集成电路
活动表。计算
Application.StatusBar=“就绪”
Application.ScreenUpdating=True
端接头