![]() |
Arrays - declaration, adding values to arrays and calculation
Where can I find easy or step-by-step instructions on understanding
arrays? I am a VBA beginner and would like to learn declaring arrays and using it. I have read a lot of articles and help files but terms like ReDim, Preserve, Subscripts, Resize, Parameter arrays, Dynamic/Fixed size arrays etc. are going over my head. The only thing that I have understood is that the first argument represents the rows; the second represents columns. Currently I want to learn how to declare arrays and how to transfer values once it is declared. How can I do the following I want to declare three arrays BigData(), SmallData() and FinalData() BigData() will have 9 rows and 20 columns. I think the answers is Dim BigData(8, 19) As Integer but I am not sure whether it is right or wrong. SmallData() will have 15 rows and 10 columns. I think the answers is Dim SmallData(14, 9) As Integer but I am not sure whether it is right or wrong. FinalData() will have 10 columns but rows will be dynamic. I don't know how to declare this. For instance, lets say BigData has the following values (I don't know how to transfer these values to the declared array) 3,4,7,9,10,11,21,32,33,35,37,41,47,57,60,64,69,72, 74,75 4,6,9,10,12,13,15,21,22,31,35,47,49,52,56,63,64,72 ,74,75 4,6,9,10,15,21,31,33,34,41,42,45,46,47,57,60,68,72 ,74,78 3,4,6,10,11,13,18,21,30,32,33,35,46,53,60,67,69,74 ,77,78 6,9,13,16,21,22,31,46,48,49,52,61,63,64,69,70,71,7 5,78,79 3,4,7,10,14,17,18,21,28,31,33,36,37,43,47,57,65,69 ,75,80 4,7,13,15,17,25,29,32,37,42,45,47,50,57,60,64,68,7 1,72,74 3,7,10,11,16,18,28,34,35,43,47,51,52,55,56,57,60,6 4,71,72 8,9,10,12,16,21,22,28,38,47,49,51,52,53,54,55,64,6 6,71,72 and SmallData has the following values (again I don't know how to transfer these values to the declared array) 3,4,7,10,21,33,37,47,57,69 3,4,10,11,21,32,33,35,60,69 3,7,10,11,35,47,57,60,64,72 3,10,11,21,32,33,35,60,69,74 4,6,9,10,15,21,31,47,72,74 4,7,32,37,47,57,60,64,72,74 4,9,10,21,33,41,47,57,60,72 4,10,21,33,41,47,57,60,72,74 6,9,13,21,22,31,49,52,63,64 6,13,21,22,31,49,52,63,64,75 9,10,21,33,41,47,57,60,72,74 9,13,21,22,31,49,52,63,64,75 13,15,17,25,29,32,37,42,45,47 34,35,43,47,51,52,55,56,57,60 49,51,52,53,54,55,64,66,71,72 I want to search the first data in SmallData() 3,4,7,10,21,33,37,47,57,69 in all the data in BigData() and check how many numbers matches. 10 numbers matches in first row, 4 in 2nd row, 6 in 3rd and 4th, 2 in 5th, 10 in 6th, 5 in 7th and 8th and 3 in the 9th row. If 10 numbers matches in more than or equal to 2 rows (here it satisfies the condition) then transfer this data (3,4,7,10,21,33,37,47,57,69) in the first row of FinalData(). Move to the 2nd row of SmallData() and do the same thing. Do it 15 times for all the 15 rows in SmallData(). Once it is done, we will have 12 rows in FinalData(). The following three will be eliminated because all 10 numbers matches only once. 13,15,17,25,29,32,37,42,45,47 34,35,43,47,51,52,55,56,57,60 49,51,52,53,54,55,64,66,71,72 Once every thing is done, liste these 12 rows in the worksheet. |
Arrays - declaration, adding values to arrays and calculation
Your declarations for bigdata and small data are fine, but probably
irrelevant. Is the data on a spreadsheet? Then to put it in an array, you would do Dim bigdata, smalldata bigdata = Range("A1").Resize(9,20).Value smalldata = Range("AA1").Resize(15,10) If you want to make final data dynamic, then you can only make the last dimension dynamic. You describe making the first dimension dynamic. This isn't allowed if you want to preserve the existing data which I am sure you do. What you need to do is change you thinkg for finaldata and rotate it 90 degrees so it columns in the first dimension and rows in the second. You would just make you code consistent with this orientation Redim Preserve FinalData(1 to 10,1 to ubound(FinalData,2)+1) for j = 1 to 10 finaldata(j,rw) = Smalldata(rw1,j) Next j for example. -- Regards, tom Ogilvy "Maxi" wrote: Where can I find easy or step-by-step instructions on understanding arrays? I am a VBA beginner and would like to learn declaring arrays and using it. I have read a lot of articles and help files but terms like ReDim, Preserve, Subscripts, Resize, Parameter arrays, Dynamic/Fixed size arrays etc. are going over my head. The only thing that I have understood is that the first argument represents the rows; the second represents columns. Currently I want to learn how to declare arrays and how to transfer values once it is declared. How can I do the following I want to declare three arrays BigData(), SmallData() and FinalData() BigData() will have 9 rows and 20 columns. I think the answers is Dim BigData(8, 19) As Integer but I am not sure whether it is right or wrong. SmallData() will have 15 rows and 10 columns. I think the answers is Dim SmallData(14, 9) As Integer but I am not sure whether it is right or wrong. FinalData() will have 10 columns but rows will be dynamic. I don't know how to declare this. For instance, lets say BigData has the following values (I don't know how to transfer these values to the declared array) 3,4,7,9,10,11,21,32,33,35,37,41,47,57,60,64,69,72, 74,75 4,6,9,10,12,13,15,21,22,31,35,47,49,52,56,63,64,72 ,74,75 4,6,9,10,15,21,31,33,34,41,42,45,46,47,57,60,68,72 ,74,78 3,4,6,10,11,13,18,21,30,32,33,35,46,53,60,67,69,74 ,77,78 6,9,13,16,21,22,31,46,48,49,52,61,63,64,69,70,71,7 5,78,79 3,4,7,10,14,17,18,21,28,31,33,36,37,43,47,57,65,69 ,75,80 4,7,13,15,17,25,29,32,37,42,45,47,50,57,60,64,68,7 1,72,74 3,7,10,11,16,18,28,34,35,43,47,51,52,55,56,57,60,6 4,71,72 8,9,10,12,16,21,22,28,38,47,49,51,52,53,54,55,64,6 6,71,72 and SmallData has the following values (again I don't know how to transfer these values to the declared array) 3,4,7,10,21,33,37,47,57,69 3,4,10,11,21,32,33,35,60,69 3,7,10,11,35,47,57,60,64,72 3,10,11,21,32,33,35,60,69,74 4,6,9,10,15,21,31,47,72,74 4,7,32,37,47,57,60,64,72,74 4,9,10,21,33,41,47,57,60,72 4,10,21,33,41,47,57,60,72,74 6,9,13,21,22,31,49,52,63,64 6,13,21,22,31,49,52,63,64,75 9,10,21,33,41,47,57,60,72,74 9,13,21,22,31,49,52,63,64,75 13,15,17,25,29,32,37,42,45,47 34,35,43,47,51,52,55,56,57,60 49,51,52,53,54,55,64,66,71,72 I want to search the first data in SmallData() 3,4,7,10,21,33,37,47,57,69 in all the data in BigData() and check how many numbers matches. 10 numbers matches in first row, 4 in 2nd row, 6 in 3rd and 4th, 2 in 5th, 10 in 6th, 5 in 7th and 8th and 3 in the 9th row. If 10 numbers matches in more than or equal to 2 rows (here it satisfies the condition) then transfer this data (3,4,7,10,21,33,37,47,57,69) in the first row of FinalData(). Move to the 2nd row of SmallData() and do the same thing. Do it 15 times for all the 15 rows in SmallData(). Once it is done, we will have 12 rows in FinalData(). The following three will be eliminated because all 10 numbers matches only once. 13,15,17,25,29,32,37,42,45,47 34,35,43,47,51,52,55,56,57,60 49,51,52,53,54,55,64,66,71,72 Once every thing is done, liste these 12 rows in the worksheet. |
All times are GMT +1. The time now is 04:37 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com