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
Excel 多单元格VBA中的舍入时间_Excel_Vba - Fatal编程技术网

Excel 多单元格VBA中的舍入时间

Excel 多单元格VBA中的舍入时间,excel,vba,Excel,Vba,我需要在大约40k个单元格中将时间四舍五入到最接近的分钟。第I列中的20k个单元格和第J列中的20k个单元格。我不希望单独的列中的值向上或向下舍入,因为这看起来很粗糙,并且我不需要原始值。我还需要每个月在不同的电子表格上为不同的人做这件事,所以我想到了VBA并添加了一个按钮。我已经计算出了我需要在每个单元格上执行的代码,但对所有40k单元格执行此操作将非常繁琐。有没有办法缩短我的代码 J4 = Range("J4") J4 = Application.WorksheetFunction.MRo

我需要在大约40k个单元格中将时间四舍五入到最接近的分钟。第I列中的20k个单元格和第J列中的20k个单元格。我不希望单独的列中的值向上或向下舍入,因为这看起来很粗糙,并且我不需要原始值。我还需要每个月在不同的电子表格上为不同的人做这件事,所以我想到了VBA并添加了一个按钮。我已经计算出了我需要在每个单元格上执行的代码,但对所有40k单元格执行此操作将非常繁琐。有没有办法缩短我的代码

J4 = Range("J4")

J4 = Application.WorksheetFunction.MRound(J4, "0:01")

Range("J4").Value = J4

J5 = Range("J5")

J5 = Application.WorksheetFunction.MRound(J5, "0:01")

Range("J5").Value = J5

J6 = Range("J6")

J6 = Application.WorksheetFunction.MRound(J6, "0:01")

Range("J6").Value = J6
谢谢您的帮助

请试试这个

Sub RoundCells()
    Dim Rng As Range, c As Range
    Set Rng = Range("I4:J20000")
    For Each c In Rng
        c.Value = Application.WorksheetFunction.MRound(c, "0:01")
    Next
End Sub

不使用工作表函数和使用VBA的
ROUND
将大大加快速度。可能有用。您还需要研究循环