Пользовательская функция, определяемая пользователем (также известная как UDF), может быть наиболее целесообразным путем.
![UDF для развертывания массива в STDEV](https://i.stack.imgur.com/0FLam.png)
Ваши значения из столбца A были расширены до кратных значений в столбце B в D2:D1381 (см. ниже).
STDEV, STDEV.P и STDEV.S формулы в E2:G2:
=STDEV($D2:$D1381)
=STDEV.P($D2:$D1381)
=STDEV.S($D2:$D1381)
Формулы UDF в E3: G3:
=udf_STDEV_Exploded($A2:$A11, 1) ' or =udf_STDEV_Exploded($A2:$A11)
=udf_STDEV_Exploded($A2:$A11, 2)
=udf_STDEV_Exploded($A2:$A11, 3)
Формулы UDF основаны на следующем коде модуля.
Function udf_STDEV_Exploded(rng As Range, Optional iTYP As Long = 1)
Dim r As Long, v As Long, vVALs As Variant
ReDim vVALs(0)
For r = 1 To rng.Rows.Count
For v = 1 To rng.Cells(r, 2).Value2
vVALs(UBound(vVALs)) = rng.Cells(r, 1).Value2
ReDim Preserve vVALs(0 To UBound(vVALs) + 1)
Next v
Next r
ReDim Preserve vVALs(0 To UBound(vVALs) - 1)
Select Case iTYP
Case 1
udf_STDEV_Exploded = WorksheetFunction.StDev(vVALs)
Case 2
udf_STDEV_Exploded = WorksheetFunction.StDev_P(vVALs)
Case 3
udf_STDEV_Exploded = WorksheetFunction.StDev_S(vVALs)
Case Else
'do nothing
End Select
End Function
Я добавил возможность обработки массива с помощью STDEV, STDEV.P или STDEV.S. Функция СТАНДОТКЛОН используется по умолчанию.
Дополнение
Код для разбивки значений из A2: B11 в длинный столбец значений на листе:
Sub stdev_vals()
Dim rw As Long, f As Long, n As Long
With Worksheets("Sheet1")
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Resize(.Cells(rw, 2).Value2, 1) = .Cells(rw, 1).Value2
Next rw
End With
End Sub
29.09.2015