2017-09-15 151 views
0

我想創建一個功能MyRange如下:範圍在Excel中使用VBA

輸入:三個數的a,b,d
輸出:值從陣列以與步驟大小B d。

例如,如果A1包含1,和B1含有5,和你寫= MyRange(A1,B1,1)在小區C1(和你按下Ctrl + Shift + Enter鍵)你得到:

A | B | C | D | E | F | G 
------------------------- 
1 | 5 | 1 | 2 | 3 | 4 | 5 

這裏是我的審判:

Function MyRange(a, b, d) 
Dim Index As Integer, Number As Integer 
Dim Res() As Integer 
Index = 0 
For Number = a To b Step d 
    Res(Index) = Number 
    Index = Index + 1 
Next Number 
MyRange = Res 
End Function 

當我嘗試這一點,Excel中拋出#VALUE!我不知道有什麼問題..

BTW,是的,我有一個類似的問題,在此之前,沒有得到答案,因爲它太複雜了,所以我會刪除它,在這裏簡化我的問題。

+0

這不是完整的答案,但有一點你需要做的就是你的輸出選擇'C1:C [B + 2]'和輸入數組公式與所有這些列強調讓你的輸出。 –

+0

你是否將它作爲數組公式輸入?你也沒有聲明Res的大小,所以需要使用Redim。 – SJR

+0

@ScottHoltzman TNX,但即使我這樣做時,Excel會引發同樣的錯誤 –

回答

1

清理該位爲我工作。主要是,我添加了ReDim Preserve來爲陣列添加維度。

Function MyRange(a As Integer, b As Integer, d As Integer) As Integer() 

    Dim Index As Integer, Number As Integer 
    Dim Res() As Integer 

    Index = 0 

    For Number = a To b Step d 

     ReDim Preserve Res(Index) 
     Res(Index) = Number 
     Index = Index + 1 

    Next Number 

    MyRange = Res 

End Function 

您將遇到的問題是有多少列從C中選擇以輸入您的公式。這將取決於d/b

+0

我怎麼能概括它來處理其中a,b,d是整數(的情況下),而不僅僅是整數? –

+0

@DudiFrid - 如果你想數組的傳遞到參數寫'(A()爲整數,b()作爲整數...)' –