2016-10-07 4 views
-2

이 프로그램을 작성하는 데 문제가 있습니다. 2 차원 배열을 정의하고 Cube라고 부르 자. 배열의 크기는 Number라는 입력에 따라 달라야합니다. 따라서 배열 Cube의 크기는 Cube (0에서 Number, 0에서 Number) 여야합니다.VBA의 다차원 동적 배열

큐브 (0,0)를 다른 입력으로 설정하려면 Starter를 사용하고 싶습니다. 여기에서이 배열의 나머지 부분을이 시작점에서 계산하겠습니다. 행 전체가 두번째 행부터

Cube(1,0) = Cube(0,0)*X 
Cube(2,0) = Cube(1,0)*X 
Cube(3,0) = Cube(2,0)*X 
And so on. 

그래서 입력 X. 곱하여 이전 번호로 계산되어야 어레이의 나머지 부분은 상기 및 다른 입력에 의해 왼쪽 숫자를 곱하여 계산한다 예를 들어, Y. :

Cube(1,1) = Cube(0,0)*Y 
Cube(2,1) = Cube(1,0)*Y 
Cube(2,2) = Cube(1,1)*Y 
Cube(3,1) = Cube(2,0)*Y 
And so on... 

모든 값이 정의되면, I는 예 if Cube(56,42)< Z 들어 500 입력 Z 아래 어떤 숫자의 값을 변경하려면, 큐브의 다음 값 (56,42) 는 500과 동일하게 변경됩니다.

피지나 lly, 맨 오른쪽 열에서 다시 큐브 (0,0)의 시작점으로 돌아가고 싶습니다. 경우 배열의 크기는 100에서 종료 : 반복을 위해서

If Cube(99,0)=500, then keep it as 500, 
Else Cube(99,0)=Cube(100,0)*A + Cube(100,1)*B 

: 아마도이 같은

If Cube(68,54)=500, then keep it as 500, 
Else Cube(68,54)=Cube(69,54)*A + Cube(69,55)*B 
+0

질문은 무엇입니까? – xxbbcc

+1

무엇을 시도 했습니까? 코드를 제공하면 사람들이 코드의 문제를 해결하는 데 도움을 줄 수 있습니다. 아무도 당신을 위해 코드를 작성하지 않습니다. – Zac

답변

1

나는 내가 올바르게 논리를 따라 생각 :

Public Sub CubeArray() 
Dim Cube()  As Double, _ 
    i   As Long, _ 
    j   As Long, _ 
    X   As Double, _ 
    Y   As Double, _ 
    Z   As Double, _ 
    A   As Double, _ 
    B   As Double 

Const CubeSize = 10 'Change this value to change your array size 
ReDim Cube(0 To CubeSize, 0 To CubeSize) As Double 
Cube(0, 0) = InputBox("What would you like the first value of the array to be?") 
X = InputBox("X =") 
Y = InputBox("Y =") 
Z = InputBox("Z =") 
A = InputBox("A =") 
B = InputBox("B =") 
For i = 1 To UBound(Cube) 
    Cube(i, 0) = Cube(i - 1, 0) * X 
    For j = 1 To UBound(Cube) 
     Cube(i, j) = Application.Max(Cube(i - 1, j - 1) * Y, Z) 
    Next j 
Next i 
For i = UBound(Cube) - 1 To 0 Step -1 
    For j = 0 To UBound(Cube) - 1 
     If Cube(i, j) <> Z Then 
      Cube(i, j) = Cube(i + 1, j) * A + Cube(i + 1, j + 1) * B 
     End If 
    Next j 
Next i 
MsgBox Cube(0, 0) 
End Sub 
-1

뭔가?

Sub demo() 
    Const n As Long = 10 

    Range("A1").Resize(n + 1, n + 1).Value = DaCube(n, 1, 2, 3) 
End Sub 

Function DaCube(n As Long, a As Double, x As Double, y As Double) As Double() 
    Dim adCube() As Double 
    Dim i As Long 
    Dim j As Long 

    ReDim adCube(0 To n, 0 To n) 
    adCube(0, 0) = a 

    For i = 1 To n 
     adCube(i, 0) = adCube(i - 1, 0) * x 

     For j = 1 To n 
      adCube(i, j) = adCube(i - 1, j - 1) * y 
     Next j 
    Next i 

    DaCube = adCube 
End Function