Home |
Search |
Today's Posts |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Very powerful. Your Sub provides to me a quantum leap in internalizing arrays.
I have wondered how I could sum a "column" in Arrays. Previously, I had been unknowingly using arrays (via w/s Row,Column ranges). Never would I have thought of using the Index function coupled with arrays to Sum. Do you have any other quick examples? I.e. a VLookup for Arrays? Would it be something like: Sub Demo() Dim m, t Const All As Long = 0 m = [{1,2,3; 21,22,23; 31,32,33}] With WorksheetFunction t = .VLookup(21,(.Index(m, All, 1),FALSE) End With End Sub Also, why use "Const" vs All = 0? Also, what is advantage for m=("One", "Two", "Three") vs m=({"One", "Two", "Three"}) ? EagleOne Dana DeLouis wrote: I am new to Array VBA code. Therefore I would never have expected that one could use a worksheet function to manipulate a VBA created Array. Hi. Just some ideas to add to your Library you may find interesting. Given a 3*3 array, take the 3rd column of 'All' rows, and sum them up. Sub Demo() Dim m, t Const All As Long = 0 m = [{1,2,3; 21,22,23; 31,32,33}] With WorksheetFunction t = .Sum(.Index(m, All, 3)) 'Or just use 0 for 'All End With End Sub '3+23+33 = 59 A good technique when working with Arrays is to use the "Locals Window" when stepping through code. It's a good way to check one's array dimensions. = = = = Dana DeLouis wrote: Dana, much appreciated! As you can tell, I am new to Array VBA code. Therefore I would never have expected that one could use a worksheet function to manipulate a VBA created Array. EagleOne Dana DeLouis wrote: wrote: Dim strArr() As String Dim iCtr as Long ReDim strArr(1 To 100, 1 To 3) ...... ...... Getting an error if I code: ReDim Preserve strArr(1 To iCtr).elements(1 to 3) Any thoughts appreciated! EagleOne Any ideas here you can use? Sub Demo() Dim m() ReDim m(1 To 1, 1 To 1) m(1, 1) = "Test Data" With WorksheetFunction ReDim Preserve m(1 To 1, 1 To 3) m = .Transpose(m) ReDim Preserve m(1 To 3, 1 To 100) m = .Transpose(m) End With End Sub 'It's resized to (100 by 3) = = = HTH :) Dana DeLouis |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Redim preserve does not work for me | Excel Programming | |||
Redim Preserve question | Excel Programming | |||
redim preserve | Excel Programming | |||
Code for optimization, ReDim Preserve not handling it well, HELP please! | Excel Programming | |||
Redim Preserve doesn't work | Excel Programming |