Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从range.formula函数获取错误消息_Excel_Vba_Random_Range_Simulation - Fatal编程技术网

Excel 从range.formula函数获取错误消息

Excel 从range.formula函数获取错误消息,excel,vba,random,range,simulation,Excel,Vba,Random,Range,Simulation,我曾尝试运行此sub以生成随机样本,但当我尝试修复公式时,在获取值的状态下,仅在单元格“Name”中收到一条错误消息。 有人能帮忙吗 这是代码,谢谢: Option Explicit Sub Simulation() Dim iSize As Integer, pMean As Double, pSD As Double, iBins As String iBins = 15 iSize = InputBox("New sheet: The size of your

我曾尝试运行此sub以生成随机样本,但当我尝试修复公式时,在获取值的状态下,仅在单元格“Name”中收到一条错误消息。 有人能帮忙吗

这是代码,谢谢:

Option Explicit

Sub Simulation()

    Dim iSize As Integer, pMean As Double, pSD As Double, iBins As String

    iBins = 15
    iSize = InputBox("New sheet: The size of your sample:", , 100)
    pMean = InputBox("New sheet: The mean of yoursample:", , 10)
    pSD = InputBox("New sheet: The SD of your sample:", , 0.2)

    Set oWS = Worksheets.Add(, ActiveSheet)

    Range(Cells(1, 1), Cells(iSize, 1)).Formula = "=Application.WorksheetFunction.NormInv(Rnd(), " & pMean & " , " & pSD & ")"
    Range(Cells(1, 1), Cells(iSize, 1)).Formula = Range(Cells(1, 1), Cells(iSize, 1)).Value

    Range("E1") = Application.WorksheetFunction.Average(Columns(1))
end sub
试一试

范围(单元格(1,1),单元格(iSize,1))。公式=“=NormInv(Rand(),”&pMean&“,&pSD&”)

如果在工作表单元格中键入
=Application.WorksheetFunction.NormInv(Rnd(),10,0.2)
,将得到完全相同的
#NAME?
错误,因为Excel不知道任何
应用程序.WorksheetFunction.NormInv
函数

Excel不是VBA,VBA不是Excel-VBA托管在Excel中,VBA项目引用Excel的类型库,该类型库定义了
应用程序
范围
,以及
工作表函数.NormInv

在写入
Range.Formula
时,您希望该值与您在Excel的公式栏中键入的值完全相同

您还需要正确地限定这些
范围
单元格
调用:

With oWS
    .Range(.Cells(1, 1), .Cells(iSize, 1)).Formula = "..."
End With

其中,
“…”
看起来与中的完全相同,只是您希望使用Excel的
RAND
函数而不是VBA的
Rnd
函数。

范围。公式需要一个类似于您在Excel单元格中输入的公式,从您的范围中取出
.Formula
,它将正常工作。注意-这些不合格的
范围
单元格
,和
调用应针对
oWS
@said
Rnd
是VBA函数。试试Excel的
RAND