溢出功能/计算

时间:2013-12-18 15:50:30

标签: java function vba loops

我正在寻找一个允许单元格/变量/索引填充到某一点的函数,但是一旦该单元格/变量/索引超过给定的阈值,它就会溢出并开始填充下一个单元格/变量/指数。我正在使用Visual Basic(excel),但我确信我可以将java等示例函数转换为我需要的函数。

基本上我在服务器上有挂载点,当服务器存储达到2TB限制时,它会创建一个新挂载点,并在两个新挂载点之间平均分配存储。但是,必须根据LUN大小舍入这些金额: 在100gb和100g之间1000gb =四舍五入到最接近的50gb(即100,150,200等) 在1000gb和1000之间2000gb =四舍五入到最接近的250gb(即1000,1250,1500等)

我的意思下面的一个例子我试图在foreach循环中做这个但是它没有做我需要的东西(再次这是excel vba):

For Each cell1 In rng1    
    If cell1.Value >= 4096 And < 6144 Then
        Range("x1") = cell1.Value/3
        Range("x2") = cell1.Value/3
        Range("x3") = cell1.Value/3

    ElseIf cell1.Value >= 2048 And < 4096 Then
        Range("x1") = cell1.Value/2            
        Range("x2") = cell1.Value/2

...

1 个答案:

答案 0 :(得分:0)

您的问题似乎仍然存在问题,因为您检查的值不是问题所述,但这是一个让您入门的概念。

Dim gig_disperse AS Integer
For Each cell1 in rng1 
   SELECT CASE cell1.value
      CASE 4096 to 6143
           gig_disperse = roundGigs(cell1.Value,250)
           Range("x1") = Round(gig_disperse/3,0)
           Range("x2") = Round(gig_disperse/3,0)
           Range("x3") = gig_disperse - Range("x1") - Range("x2")
      CASE 2048 to 4095
           gig_disperse = roundGigs(cell1.Value,50)
           Range("x1") = Round(gig_disperse/2,0)
           Range("x2") = gig_disperse - Range("x1")
   END SELECT
Next cell1


Function roundGigs(val As Long, gigs As Integer) AS Integer
    roundGigs = Round(val / gigs,0) * gigs
End Function