RichMaru Posted June 8, 2015 Report Share Posted June 8, 2015 There are lots of times when I wish MEP would allow more than one dimension for a variable array. A simple example would be when I'm trying to store the contents of a spreadsheet. I could use one dimension for the row, and the other for the column. That way I could refer to an array element as, say, T[5,4]. As far as I know, this is not possible. Does anyone have a way to deal with this limitation? I've thought about using an array where the elements are other arrays, but I haven't figured out how to make that work. A 2-dimensional array would be so much easier. Any ideas? Rich Quote Link to comment Share on other sites More sharing options...
Cory Posted June 8, 2015 Report Share Posted June 8, 2015 Make multiple single dimension arrays. You can even name then to match your columns and rows. A, B, and so on. So cell B2 would be B[2] Quote Link to comment Share on other sites More sharing options...
RichMaru Posted June 9, 2015 Author Report Share Posted June 9, 2015 Yes, that would allow me to address any particular cell, but it requires me to declare an array variable for every possible column - a royal pain. And how would you write a loop structure to step through all cells in a (2-dimensional) range? You'd have to have a separate loop for every column (A, B, C...). Rich Quote Link to comment Share on other sites More sharing options...
Cory Posted June 10, 2015 Report Share Posted June 10, 2015 Not having multidimensional arrays is a pain. I'm just giving you the best suggestions given the limitations. Personally it's another reason I prefer .NET because it has DataTables. But you don't have to loop though every column. Simply use an increment integer as a pointer. IE for %pointer% = 1 to 1000. %B[%pointer%]%. For rows you could name the column numbers, EG A = 1, or I imagine you could do the math to get the ASCII value and add it to an incrementing integer. "A" is 65 so make it 65 + %pointer%. You might have to run as command text however. I know. It's sloppy. Or save all the value in a single array and do the modular math. Or perhaps create your own addressing system in a second array where the one would contain the row/column and search it each time and use the pointer from it to use as a pointer in the other array. No solution I can think of is elegant. You can see why programming languages evolved to have tabular data structures. In .NET it's simple to reach in and grab and modify cells using Interop. In fact it can do anything a person can do. I was considering writing a simple command line program that would take a few parameters and do some of the normal operations MEP users would want. It woud be really simple. Tell it the file name, worksheet name, and range and it would return the values for instance. And it all could be run like an external command so it would be invisible. Click here and you can see all the things we could do with Interop. But until I find some way to be compensated I need to work on my other programs that clients pay me for. I've been wanting to write some add-ons for Excel for some time so if you or anyone are interested, maybe we could even do some crowdfunding, I'd love to create something like this. The other one I would love to write is a RegEx add on. I've posted here before suggesting it but received no responses. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.