四舍五入到下一个整数

时间:2018-08-04 19:34:59

标签: excel vba

我在sheet1(主表)中有数据要除以300,然后粘贴到每张表中。

这些工作表是由VBA代码创建的。

如果我的lastrow给出一个十进制值,我会发现问题。

例如我计算MYdata的最后一行,然后将其除以300,因为我在每张图纸中需要的数据最多为300。如果我的最后一行数据为1342,除以300,则得到4.473333333。这只会创建4张纸。我需要5张数据。

Sub test() 

Dim lrow As Long, lrow1 As Double 
lrow = Sheet3.Range("a65000").End(xlUp).Row 
lrow1 = Sheet3.Range("a65000").End(xlUp).Row 
num = lrow / 300 

For x = 1 To num 
    Sheets.Add 
    ActiveSheet.Name = x 
    Sheet3.Activate 
    Sheet3.Range("a2:a301").Select 
    Sheet3.Range("a2:a301").Cut 
    Sheets(x).Select Range("a1").Select 
    ActiveSheet.Paste 
    Sheet3.Select 
    Selection.Delete Shift:=xlUp 
Next x 

End Sub

1 个答案:

答案 0 :(得分:1)

这将始终将您舍入到下一个整数

num = Round((lrow / 300) + 0.5, 1)

一些建议的更新

Option Explicit

Sub Parse ()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet3")
Dim ns As Worksheet 'New Sheet
Dim lrow As Long, x

lrow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

For x = 1 To Round((lrow / 300) + 0.5, 1)
    Set ns = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ns.Name = x
        ws.Range("A2:A301").Copy ns.Range("A1")
        ws.Range("A2:A301").Delete Shift:=xlUp
Next x

End Sub