2015-01-16 3 views
0

Excel의 매크로 안에 배열 배열을 만들려고합니다. 여기에 내 문제가 있습니다 ... 나는 1 년 달력을 만들고 그 달력 안에 날짜를 강조하고 싶습니다.Excel VBA 배열 배열

워크 시트에 날짜 범위가 있습니다. 이것들은 제가 기억하고 싶은 어떤 종류의 날짜 들일 것입니다. 나는 그것들을 읽은 다음 달력을 만들어 이것들을 다른 배경색으로 다른 날짜로 만듭니다. 내 제한된 사고에서

9/24/2015 
1/20/2015 
4/5/2015 
9/30/2015 
1/1/2015 

내가 그들을 읽을 것, 월별로 그룹 그들 (년 중요하지 않습니다) 한 후 그 달과 관련된 날짜를 넣어. 여기

9 -> 24, 30 
1 -> 20, 1 
4 -> 5 

내가 내가 2 차원 배열을 가질 수 있습니다 알고 지금까지

'Set Variables 
Dim ImportantDays As Variant 
Dim id As Integer 
Dim tempSplitDateArray() As Integer 

'Grab the dates from the entered WorkSheet 
ImportantDays = Worksheets("MainData").Range("E4:E19") 

'Loop through the dates entered 
For id = LBound(ImportantDays, 1) To UBound(ImportantDays, 1) 
    If ImportantDays(id, 1) <> "" Then 
     tempSplitDateArray() = Split(ImportantDays(id, 1), "/") 
     '--I now have tempSplitDateArray(0) = month 
     '--tempSplitDateArray(1) = day 

     '------------------------------------ 
     '-- Not sure of my next step here 
     '------------------------------------ 
    End If 
Next id 

을 것입니다,하지만 어떻게 내가 배열 슬롯이 열려있는 추적합니까? 나는이 변수를 가지고있다. (12는 월, 16은 허용 된 총 날짜 수). 를 저장할 때

  • 어떻게 추적 할 수 ...

    Dim monthlyDates(12, 16) As Variant 
    

    이상적으로 나는 monthlyDates (9) 또는 같은 모든 9 월 달을 저장하는 것입니다,하지만 난에 관해서는 딱하다?

  • 특정 월을 생성 할 때 값에 액세스하고 반복하는 방법은 무엇입니까?

어떤 생각이? 내가 제대로 이해한다면, 나는이 옵션은 바로 당신을위한 생각

+0

. 날짜는 하나의 값이며 달력 날짜가있는 배열 하나와 중요한 요일이있는 배열 하나만 있으면됩니다. 내가 여기서 무엇을 놓치고 있니? – ja72

+0

특정 달의 모든 요일을 보유하는 간단한 배열을 만들려고합니다. 즉, 어떤 달인지 알 수있는 값과 연관된 일의 배열이 필요합니다. – ZombieCode

답변

0

...

Sub test() 
Dim id&, z&, oCell As Range, Key, MKey 
Dim I_Month As Object: Set I_Month = CreateObject("Scripting.Dictionary") 
Dim I_Day As Object: Set I_Day = CreateObject("Scripting.Dictionary") 
Dim Cnt As Object: Set Cnt = CreateObject("Scripting.Dictionary") 
Dim Month_count As Object: Set Month_count = CreateObject("Scripting.Dictionary") 
id = 1 
'Grab the dates from the entered WorkSheet 
For Each oCell In Worksheets("MainData").Range("E4:E19") 
    I_Month.Add id, Month(oCell.Value) 
    I_Day.Add id, Day(oCell.Value) 
    id = id + 1 
Next 
id = 12 
z = 0 
While id <> 0 
    For Each Key In I_Month 
     If I_Month(Key) = id Then z = z + 1 
    Next 
    Cnt.Add id, z 
    id = id - 1: z = 0 
Wend 
For Each Key In I_Month 
     For Each MKey In Cnt 
      If MKey = I_Month(Key) Then 
       id = Cnt(MKey) 
       Exit For 
      End If 
     Next 
    Month_count.Add Key, id 
Next 
For Each Key In I_Month 
    Debug.Print Key, I_Month(Key), I_Day(Key), Month_count(Key) 
Next 
End Sub 

결과

Key   Month   Day   Count of the Month iteration 
1    6    22   4 
2    10   24   2 
3    6    15   4 
4    10   28   2 
5    1    14   3 
6    1    9    3 
7    11   15   1 
8    1    24   3 
9    6    2    4 
10   3    21   1 
11   12   26   2 
12   5    25   2 
13   2    23   1 
14   12   7    2 
15   5    31   2 
16   6    5    4 
난 당신이 2 차원 배열 또는 배열의 배열을 필요로 이해하지 않는
+0

도와 주셔서 감사합니다. 나는 이것을 사용하고 그것을 작동시키기 위해 몇 가지를 바꿀 수있었습니다. 나는 VBA가 완전한 VB가 제공해야하는 것에 매우 제한된다는 것을 발견했다. – ZombieCode