xellstorm
ZH
開啟應用程式

從 @RISK、ModelRisk 或 Analytic Solver 移轉模型

指南 · 更新於 2026年10月

xellstorm 不需增益集,就能開啟專為 @RISK、ModelRisk 或 Analytic Solver 建立的 Excel 檔案,讀出其中 164 個分配函數,把每個這類公式轉成輸入,參數仍連結到儲存格。執行前會先列出轉換了什麼,以及每個沒轉換的公式和原因。

這 164 個函數中,@RISK 有 53 個、ModelRisk 有 62 個、Analytic Solver 有 49 個。另外也支援 65 種以百分位數指定分配的寫法,以及截斷、輸出標記、相關矩陣和多重模擬表。

匯入會從 @RISK 檔案讀出什麼

範例取自專案應變準備金的營建估算,改寫成 @RISK 模型的寫法:每個成本項目是該列儲存格上的 =RiskPert(min, most likely, max, RiskName(label)),每個風險事件是以機率為參數的 RiskBernoulli,總成本和超支用 RiskOutput 標記,結構與 MEP 用 RiskCorrmat 設定相關性,三個預算放在同一個 RiskSimtable,另有一個儲存格用 RiskMean 回報總成本的平均值。第二張工作表「Demonstrations」有五個獨立的公式:兩個能轉換的算術形式,三個無法轉換的公式。檔案是我們用指令碼產生的;xellstorm 讀取它不需要 @RISK,您也不需要。

在應用程式中,Distributions 步驟的 Import from workbook 會列出找到的公式(命令列的 xellstorm import 印出的清單相同)。這個檔案共轉換出 12 個輸入:6 個成本項目、4 個風險事件和 2 個算術示範。成本項目與風險事件的參數仍連結到儲存格,所以改了檔案裡的最小值或機率,下次執行就會跟著變;RiskName(A3) 則依該列的文字為輸入命名。能轉換的兩個,一個是乘上係數的常態抽樣,另一個的平均值由另一個儲存格算出。估算的輸出都沒有用到這兩個。

匯入在檔案中轉換的內容(括號內為連結的儲存格與其中的值)
儲存格檔案中的公式轉換為
E3=RiskPert(B3,C3,D3,RiskName(A3))場地工程:PERT,最小 B3(100)、最可能 C3(120)、最大 D3(170)
E4=RiskPert(B4,C4,D4,RiskName(A4))基礎:PERT,最小 B4(300)、最可能 C4(340)、最大 D4(460)
E5=RiskPert(B5,C5,D5,RiskName(A5),RiskCorrmat(Correlation,1))結構:PERT,最小 B5(760)、最可能 C5(820)、最大 D5(1,010)
E6=RiskPert(B6,C6,D6,RiskName(A6),RiskCorrmat(Correlation,2))MEP:PERT,最小 B6(540)、最可能 C6(610)、最大 D6(780)
E7=RiskPert(B7,C7,D7,RiskName(A7))裝修:PERT,最小 B7(400)、最可能 C7(450)、最大 D7(560)
E8=RiskPert(B8,C8,D8,RiskName(A8))設備:PERT,最小 B8(260)、最可能 C8(280)、最大 D8(330)
D11=RiskBernoulli(B11,RiskName(A11))地質條件:白努利,機率 B11(0.25)
D12=RiskBernoulli(B12,RiskName(A12))設計變更:白努利,機率 B12(0.35)
D13=RiskBernoulli(B13,RiskName(A13))供應商延誤:白努利,機率 B13(0.2)
D14=RiskBernoulli(B14,RiskName(A14))惡劣天氣:白努利,機率 B14(0.3)
Demonstrations!B3=RiskNormal(100,10)*1.1平均值 100、標準差 10 的常態,抽樣值再乘以 1.1;僅作示範,估算沒有用到
Demonstrations!B4=RiskNormal(Estimate!C3*1.1,10)平均值為 Estimate!C3*1.1(132)、標準差為 10 的常態;僅作示範,估算沒有用到

同一次匯入也會讀取模型的其餘部分:

無法轉換的公式也會列出。第二張工作表上的 3 個公式都附有匯入給出的原因,也都有解決辦法:

匯入不轉換的內容與原因,見檔案的「Demonstrations」工作表
公式給出的原因處理方式
=RiskBinomial(1,0.3)*RiskTriang(20,40,80)一個公式中有多個分配時不轉換;請讓每個分配各用一個輸入儲存格拆開它:一個儲存格放 =RiskBernoulli(0.3) 表示風險是否發生,一個放 =RiskTriang(20,40,80) 表示影響,再用第三個儲存格相乘,估算中的風險事件就是這樣做的。
=RISKCOMPOUND(RiskPoisson(3),RiskLognorm(10,3))RISKCOMPOUND 在 xellstorm 中沒有完全對應的函數xellstorm 沒有複合分配。請把次數和大小分別放在各自的儲存格中建模,或不要把該儲存格放進模型。
=RISKPERTALT(10%,90,"m.likely",100,90%,130)RISKPERTALT 在 xellstorm 中沒有完全對應的函數請直接輸入 PERT 的最小、最可能與最大值(RiskPert),或把百分位數交給能轉換的 RiskTrigen。

執行轉換後的模型

用匯入的設定執行 5,000 次試驗,平均總成本為 2,784.7(單位:千美元)。同樣這些分配的理論平均值是 2,784.7,算法是 PERT 平均值 (最小 + 4 × 最可能 + 最大) / 6,加上各風險的機率乘以影響;模擬平均值的標準誤為 1.7。結構與 MEP 的等級相關達到 0.60。RiskSimtable 的三個預算,以基準和兩個情境執行的結果如下:

匯入後的模型執行結果:總成本超出 RiskSimtable 各預算的機率(5,000 次試驗,單位:千美元)
執行預算超出的機率
基準執行(Simulation 1)2,90017.7%
Simulation 23,0005.2%
Simulation 33,1000.7%

預算越大,超出的頻率越低。各情境抽取的數字與基準執行相同,所以各列的差異完全來自預算,而不是抽樣。

結果會與增益集一致嗎?

模型相同,亂數不同。匯入的每條規則把一個函數對應到它所描述的分配,參數照廠商文件的定義轉換,並與對應的 scipy 分配比對測試;產生測試資料的指令碼也會依廠商文件記載的公式,檢查每個對應的平均值。所以只要檔案中的每個分配都能轉換,平均值和百分位數與增益集的差異就只來自抽樣雜訊,試驗次數越多,雜訊越小:上方的標準誤就是平均值預期的雜訊大小。

相關性是等級相關,定義與 @RISK、Analytic Solver 相同,xellstorm 也能達到指定的等級相關。至於如何配對抽樣值來達成,各工具做法不同,所以有相關性的模型,兩端極端值的差異可能比單純的抽樣雜訊所能解釋的略大。檔案本身不會更動:xellstorm 只讀取,模型仍可在增益集中開啟。

可轉換的內容

無法轉換的內容

下列情況無法轉換:同一個儲存格有多個分配;分配放在另一個函數內或分母中;直接對分配做除法;需要改變運算順序的連鎖運算。例如 (RiskNormal(0,1)+5)*2 與 RiskNormal(0,1)*2*3 會保持原樣並列出原因。RiskNormal(0,1)*(1/C1) 則在 C1 算出有限的正乘數時可以轉換,因為公式先明確算出倒數再相乘。乘數算出來是零或負數、引數呼叫函數或依賴隨機儲存格、沒有精確對應的函數(複合分配、時間序列函數、RiskPertAlt 與其他以兩個形狀參數指定的百分位數形式)、ModelRisk 的 U 引數與 copula,以及表中沒有的屬性,同樣不支援。引擎無法計算不支援的增益集公式;相容性檢查會指出是哪一個。

支援的函數

這些表格由匯入器自己的規則清單產生,所以列出的正是能轉換的全部內容。「百分位數」標示以百分位數指定分配的寫法;† 標示只能用數字轉換的函數。每個分配下方是它在 xellstorm 規格中的名稱。

匯入器會轉換的分配函數,依分配列出(† 僅限數字:參數由引數算出)
分配 (xellstorm 名稱)@RISKModelRiskAnalytic Solver
白努利
bern
RiskBernoulliVoseBernoulliPsiBernoulli
貝他
beta
RiskBeta
RiskBetaGeneral
RiskBetaSubj†
VoseBeta
VoseBeta4
VoseBetaSubj†
PsiBeta
PsiBetaGen
PsiBetaSubj†
二項
binom
RiskBinomialVoseBinomialPsiBinomial
Burr XII
burr12
RiskBurr12——
柯西
cauchy
RiskCauchy
百分位數:
RiskCauchyAlt
RiskCauchyAltD
VoseCauchy—
卡方
chi2
RiskChiSq
百分位數:
RiskChiSqAlt
RiskChiSqAltD
VoseChiSqPsiChiSquare
百分位數:
PsiChiSquareAlt
Chi(卡)、馬克士威
chi
—VoseChi
VoseMaxwell
—
累積
cumul
RiskCumul
RiskCumulD†
VoseCumulA
VoseCumulD†
VoseOgive†
PsiCumul
Dagum(Burr III)
burr
RiskDagumVoseDagumPsiDagum
離散
custom
RiskDiscrete
RiskDUniform
VoseDiscrete
VoseDUniform
PsiDiscrete
PsiDisUniform
指數
expon
RiskExpon
百分位數:
RiskExponAlt
RiskExponAltD
VoseExpon
VoseExponential
PsiExponential
百分位數:
PsiExponentialAlt
極值(最大值,Gumbel)
gumbel_r
RiskExtValue
百分位數:
RiskExtValueAlt
RiskExtValueAltD
VoseExtValueMaxPsiMaxExtreme
百分位數:
PsiMaxExtremeAlt
極值(最小值)
gumbel_l
RiskExtValueMin
百分位數:
RiskExtValueMinAlt
RiskExtValueMinAltD
—PsiMinExtreme
百分位數:
PsiMinExtremeAlt
F
f
RiskFVoseFPsiFDist
疲勞壽命(Birnbaum–Saunders)
fatiguelife
RiskFatigueLife
百分位數:
RiskFatigueLifeAlt
RiskFatigueLifeAltD
VoseFatiguePsiFatigueLife
百分位數:
PsiFatigueLifeAlt
Fréchet
invweibull
RiskFrechet
百分位數:
RiskFrechetAlt
RiskFrechetAltD
—PsiFrechet
百分位數:
PsiFrechetAlt
伽瑪、愛爾朗
gamma
RiskGamma
RiskErlang
百分位數:
RiskGammaAlt
RiskGammaAltD
VoseGamma
VoseErlang
PsiGamma
PsiErlang
百分位數:
PsiGammaAlt
一般(相對權重)
general
RiskGeneralVoseRelative—
廣義柏拉圖
genpareto
—VoseGPD—
直方圖
histogram
RiskHistogrmVoseHistogramPsiHistogram
雙曲正割
hypsecant
RiskHypSecant
百分位數:
RiskHypSecantAlt
RiskHypSecantAltD
VoseHSPsiHypSecant
超幾何
hypergeom
RiskHypergeoVoseHypergeoPsiHyperGeo
整數均勻
randint
RiskIntUniformVoseIntUniform
VoseStepUniform†
PsiIntUniform
逆高斯
invgauss
RiskInvgauss
百分位數:
RiskInvgaussAlt
RiskInvgaussAltD
VoseInvGaussPsiInvNormal
Johnson SB
johnsonsb
RiskJohnsonSBVoseJohnsonBPsiJohnsonSB
Johnson SU
johnsonsu
RiskJohnsonSUVoseJohnsonUPsiJohnsonSU
Kumaraswamy
kumaraswamy
RiskKumaraswamyVoseKumaraswamy
VoseKumaraswamy4
PsiKumaraswamy
拉普拉斯
laplace
RiskLaplace
百分位數:
RiskLaplaceAlt
RiskLaplaceAltD
VoseLaplace—
Lévy
levy
RiskLevy
百分位數:
RiskLevyAlt
RiskLevyAltD
VoseLevyPsiLevy
百分位數:
PsiLevyAlt
對數邏輯斯
fisk
RiskLogLogistic
百分位數:
RiskLogLogisticAlt
RiskLogLogisticAltD
VoseLogLogisticPsiLogLogistic
百分位數:
PsiLogLogisticAlt
邏輯斯
logistic
RiskLogistic
百分位數:
RiskLogisticAlt
RiskLogisticAltD
VoseLogisticPsiLogistic
百分位數:
PsiLogisticAlt
對數常態
lognorm
RiskLognorm
RiskLognorm2
百分位數:
RiskLognormAlt
RiskLognormAltD
VoseLognormal
VoseLognormalE
PsiLogNormal
PsiLognorm
PsiLognorm2
百分位數:
PsiLogNormalAlt
負二項、幾何
nbinom
RiskGeomet
RiskNegbin
VoseGeometric
VoseNegBin
VoseNegBinom
VosePolya†
PsiGeometric
PsiNegBinomial
常態
norm
RiskNormal
RiskErf†
百分位數:
RiskNormalAlt
RiskNormalAltD
VoseNormal
VoseErf†
PsiNormal
PsiErf†
百分位數:
PsiNormalAlt
柏拉圖
pareto
RiskPareto
百分位數:
RiskParetoAlt
RiskParetoAltD
VoseParetoPsiPareto
百分位數:
PsiParetoAlt
柏拉圖 II(Lomax)
lomax
RiskPareto2
百分位數:
RiskPareto2Alt
RiskPareto2AltD
VosePareto2PsiPareto2
百分位數:
PsiPareto2Alt
Pearson V(逆伽瑪)
invgamma
RiskPearson5
百分位數:
RiskPearson5Alt
RiskPearson5AltD
VosePearson5PsiPearson5
百分位數:
PsiPearson5Alt
Pearson VI(beta prime)
betaprime
RiskPearson6VosePearson6PsiPearson6
PERT
pert
RiskPertVosePERT
VoseModPERT
PsiPert
卜瓦松
poiss
RiskPoissonVosePoissonPsiPoisson
瑞利
rayleigh
RiskRayleigh
百分位數:
RiskRayleighAlt
RiskRayleighAltD
VoseRayleighPsiRayleigh
百分位數:
PsiRayleighAlt
倒數(對數均勻)
loguniform
RiskReciprocalVoseReciprocalPsiReciprocal
學生 t
t
RiskStudent
百分位數:
RiskStudentAlt
RiskStudentAltD
VoseStudent
VoseStudent3†
PsiStudent
百分位數:
PsiStudentAlt
三角
triang
RiskTriangVoseTrianglePsiTriangular
由百分位數定義的三角(Trigen)
trigen
RiskTrigen
百分位數:
RiskTriangAlt
VoseTriangleAltPsiTriangGen
均勻
unif
RiskUniform
百分位數:
RiskUniformAlt
RiskUniformAltD
VoseUniformPsiUniform
韋伯
weibull_min
RiskWeibull
百分位數:
RiskWeibullAlt
RiskWeibullAltD
VoseWeibull
VoseWeibull3
PsiWeibull
百分位數:
PsiWeibullAlt
匯入器會轉換的 Excel 抽樣公式(† 僅限數字)
公式xellstorm
=NORM.INV(RAND(), mean, sd)norm (loc, scale)
=NORMINV(RAND(), mean, sd)norm (loc, scale)
=mean + sd*NORM.S.INV(RAND())norm (loc, scale)
=LOGNORM.INV(RAND(), mu, sigma)lognorm (mu, sigma)
=LOGINV(RAND(), mu, sigma)lognorm (mu, sigma)
=GAMMA.INV(RAND(), alpha, beta)gamma (a, scale)
=GAMMAINV(RAND(), alpha, beta)gamma (a, scale)
=BETA.INV(RAND(), alpha, beta)beta (a, b)
=BETA.INV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BETAINV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BINOM.INV(n, p, RAND())binom (n, p)
=CRITBINOM(n, p, RAND())binom (n, p)
=RANDBETWEEN(a, b)randint (min, max)
=a + (b - a)*RAND()unif (min, max)
=a + s*RAND()unif (loc, scale)
=RAND()unif
=IF(RAND() < p, 1, 0)bern (p)
=IF(RAND() < p, x, y)†custom (x, prob)
匯入器讀取的屬性函數、標記與統計量
函數增益集在 xellstorm 中轉換為
RiskTruncate@RISK截斷:truncate_min、truncate_max(在任何平移之前)
RiskTruncate2@RISK截斷:平移後數值的 truncate_min、truncate_max(再依平移量移回)
RiskTruncateP@RISK截斷:truncate_pmin、truncate_pmax(分配的百分位數)
RiskShift@RISK平移:shift
RiskName@RISK名稱:輸入的名稱
RiskLock@RISK鎖定:固定值(RiskLock(v),或 RiskStatic 的值)
RiskCorrmat@RISK相關性:同一矩陣內各輸入之間的等級相關
RiskDepC@RISK相關性:與同名配對的輸入之間的等級相關
RiskIndepC@RISK相關性:與同名配對的輸入之間的等級相關
RiskSimtable@RISK每次模擬一個值:基準執行中固定該儲存格,之後每次模擬各成一個情境
RiskOutput@RISK輸出:名稱沿用函數所給的名稱
VoseXBoundsModelRisk截斷:truncate_min、truncate_max(在任何平移之前)
VosePBoundsModelRisk截斷:truncate_pmin、truncate_pmax(分配的百分位數)
VoseShiftModelRisk平移:shift
VoseInputModelRisk名稱:輸入的名稱
VoseSimTableModelRisk每次模擬一個值:基準執行中固定該儲存格,之後每次模擬各成一個情境
VoseOutputModelRisk輸出:名稱沿用函數所給的名稱
PsiTruncateAnalytic Solver截斷:類型 1(預設):在任何平移之前的 truncate_min、truncate_max;-1:平移後的數值;3:truncate_pmin、truncate_pmax
PsiTruncatePAnalytic Solver截斷:truncate_pmin、truncate_pmax(分配的百分位數)
PsiShiftAnalytic Solver平移:shift
PsiNameAnalytic Solver名稱:輸入的名稱
PsiCorrMatrixAnalytic Solver相關性:同一矩陣內各輸入之間的等級相關
PsiCorrDepenAnalytic Solver相關性:與同名配對的輸入之間的等級相關
PsiCorrIndepAnalytic Solver相關性:與同名配對的輸入之間的等級相關
PsiSimParamAnalytic Solver每次模擬一個值:基準執行中固定該儲存格,之後每次模擬各成一個情境
PsiOutputAnalytic Solver輸出:該儲存格本身,或其參照的儲存格
PsiSimOutputAnalytic Solver輸出:該儲存格本身,或其參照的儲存格
PsiMeanAnalytic Solver統計量:第一個引數的儲存格成為輸出(與所有 Psi 統計量對輸出的處理相同)

常見問題

需要安裝 @RISK、ModelRisk 或 Analytic Solver 嗎?

不需要。xellstorm 直接從 .xlsx 檔案讀取公式,用自己的引擎在瀏覽器計算模型,不需要 Excel 或增益集。請先將 .xls 與 .xlsb 檔案另存為 .xlsx。

xellstorm 會更動我的 Excel 檔案嗎?

不會。匯入只是把公式轉成 xellstorm 自己設定中的輸入,不會寫入電腦上的檔案,所以模型照樣能在增益集中開啟與執行。

相關矩陣會變成什麼?

共用同一個 RiskCorrmat 或 PsiCorrMatrix 範圍的輸入,會取得該矩陣的等級相關,數值在匯入時從儲存格讀取;RiskDepC 與 PsiCorrDepen 則把輸入與同名的輸入配成一對。讀不到的配對(矩陣不是方陣、位置在矩陣之外、儲存格沒有數字)會寫在匯入的附註中;沒能轉換的輸入連同原因列出,並從所屬的配對中排除。若矩陣不是有效的相關矩陣,xellstorm 會改用最接近的有效矩陣,應用程式也會在執行前顯示。

RiskSimtable 會變成什麼?

第一個值在基準執行中固定該儲存格,之後每個值各成一個情境,依序命名為 Simulation 2、Simulation 3,以此類推。情境抽取的亂數與基準執行相同,所以彼此的差異完全來自表中的值。

@RISK、ModelRisk 與 Analytic Solver 皆為各自所有人的商標。xellstorm 與它們並無關聯;這裡提到函數名稱,只是說明 xellstorm 讀得懂哪些內容。

相關內容

xellstorm 是在瀏覽器中執行的 Excel 模型蒙地卡羅模擬工具:免裝增益集,Excel 檔案也不會離開您的電腦。