【问题标题】:Round up to next whole number向上舍入到下一个整数
【发布时间】:2019-01-12 00:43:48
【问题描述】:

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

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

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

例如我计算 MYdata 的最后一行并将其除以 300,因为我需要每张表中的数据最多 300。如果我的 lastrow 数据是 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

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多