我想寫一個函數在VBA中,將計算三個數字的標準偏差和範圍。如果所有數字都被確定爲---那麼函數應該輸出---作爲答案。如果所有三個都不是---那麼標準偏差或範圍應該用剩下的數字計算,同時忽略---數字。這些號碼由用戶輸入。以下是我爲範圍和標準偏差計算編寫的代碼。通過使用內置的excel WS函數,如果它們不是數字,它已經忽略了輸入,我可以繞過那個棘手的位。然而,正如所看到的,我一直無法讓代碼識別出所有這三種情況---註冊爲---。VBA寫入代碼的標準偏差和範圍
函數來計算RANGE -------------------------------
功能範圍(的ParamArray ObservedValues() )
雖然ObservedValues(I)= 「---」 範圍= 「---」 WEND
Max = Application.WorksheetFunction.Max(ObservedValues)
Min = Application.WorksheetFunction.Min(ObservedValues)
Range = Max - Min
端功能
個
函數來計算標準偏差(多次嘗試)
第一次嘗試
功能SD(ObservedValueA,ObservedValueB,ObservedValueC,ObservedMean)
如果ObservedValueA = 「---」 和ObservedValueB =「 ---」而ObservedValueC = 「---」 那麼 SD = 「---」 結束如果
If ObservedValueA <> "---" Then
a = 1
x = ObservedValueA - ObservedMean
Else
a = 0
x = 1
End If
If ObservedValueB <> "---" Then
b = 1
y = ObservedValueB - ObservedMean
Else
b = 0
y = 1
End If
If ObservedValueC <> "---" Then
c = 1
Z = ObservedValueC - ObservedMean
Else
c = 0
Z = 1
End If
SD = SQR(( 1 /(A + B + C))* X^2 * Y^2 * Z^2)
端功能
第二次嘗試
功能SD(的ParamArray Number_Input())
雖然Number_Input = 「---」 SD = 「---」 WEND SD = Application.WorksheetFunction.StDev(Number_Input)
端功能
謝謝愛德華的幫助。然而,這並不能完全解決我的問題,用戶輸入的數字並不總是按照A1:A3的順序排列,而是通常會像G4,Y2和J17那樣位於表格的隨機位置。這個計算需要對不同的單元進行多次。這就是爲什麼我寫了我的代碼,以便變量將由單元格選擇決定。 – Andrea