我在电子表格中有一个数组(5,6),它可以包含0到15之间的随机值。我正在创建一个VBA脚本,该脚本将根据矩阵的一般平均值集中或分配这些值。达到普遍平均水平的结果。
这是用于服装店的库存系统。阵列上的行表示尺寸(库存,L,M,S,xS,xL,xxL)和不同商店的列。
Private Sub Trasladeichon(concentrado, ref, rBogota, cuenta)
Dim talla As String
Dim cantidad As Integer
tiendas = concentrado
Set posicion = ActiveCell
Set rooty = posicion
profundidad = cuenta
talla = ActiveCell.Offset(0, -1).Value
'rBogota.Select
For p = 0 To profundidad - 1
producto = WorksheetFunction.Sum(rBogota)
For i = 0 To tiendas - 1
cantidad = WorksheetFunction.RoundDown(producto / tiendas, 2)
If ActiveCell.Offset(0, i).Value < cantidad Then
For j = 5 To i Step -1 ' CAMBIAR 5 POR NUMERO DE TIENDAS
If ActiveCell.Offset(0, j).Value > 0 Then
Do While ActiveCell.Offset(0, i).Value < cantidad And ActiveCell.Offset(0, j).Value > 0 And ActiveCell.Offset(0, j) <> ActiveCell.Offset(0, i)
ActiveCell.Offset(0, i).Value = ActiveCell.Offset(0, i).Value + 1
ActiveCell.Offset(0, j).Value = ActiveCell.Offset(0, j).Value - 1
Loop
If ActiveCell.Offset(0, i).Value = cantidad Then
GoTo iloop
End If
End If
Next j
End If
iloop:
Next i
'''''''''''''''''''''''''''''''''''''''
For i = 0 To tiendas - 1
If ActiveCell.Offset(0, i).Value > cantidad Then
For j = i To tiendas - 1
Do While ActiveCell.Offset(0, i).Value > cantidad And ActiveCell.Offset(0, j).Value < cantidad And ActiveCell.Offset(0, j) <> ActiveCell.Offset(0, i)
ActiveCell.Offset(0, i).Value = ActiveCell.Offset(o, i).Value - 1
ActiveCell.Offset(0, j).Value = ActiveCell.Offset(o, j).Value + 1
Loop
Next j
End If
Next i
'''''''''''''''''''''''
ActiveCell.Offset(1, 0).Select
Next p
End Sub
下面是一个示例,其中矩阵的单行内部具有不同的值:
[0] [0] [0] [2] [0]-> [2] [0] [0] [0] [0]如果矩阵内有少量ov值,请将所有值放入在(0,0)
[0] [0] [1] [2] [0]-> [2] [1] [] [] []这里的库存量少,但由于要在两个商店中分配,所以它会分配到左侧的第一家商店。
[0] [1] [0] [1] [1]->与上一个相同的情况
[0] [0] [0] [10] [0]-> [2] [2] [2] [2] [2]足够的库存来分类到所有商店。
[0] [5] [0] [5] [0]-> [2] [2] [2] [2] [2]与以前相同。