我正在寻找一个函数,它可以让一个单元格/变量/索引填充到某个点,但是一旦那个单元格/变量/索引超过了给定的阈值,它就会溢出并开始填充下一个单元格/变量/索引。我使用的是Visual Basic (excel),但我确信我可以将示例函数从java等转换成我需要的内容。
基本上,我在服务器上有挂载点,当服务器存储达到2TB限制时,它会创建一个新的挂载点,并在两个新的挂载点之间均匀地拆分存储。但是,这些数量必须根据LUN大小进行四舍五入:在100 ie和1000 ie之间=四舍五入到最接近的50 ie(即100、150、200等)介于1000 to和2000 to之间=四舍五入到最接近的250 to(即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
...
发布于 2013-12-18 16:33:26
你的问题似乎仍然有漏洞,因为你正在检查的值并不是问题所说的,但这里有一个概念可以让你开始。
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
https://stackoverflow.com/questions/20662564
复制相似问题