vba是否有一种方法可以在内部平均分配值?

时间:2019-04-15 15:57:43

标签: excel vba

我在电子表格中有一个数组(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]与以前相同。

0 个答案:

没有答案