Hi guys,
I have a question regarding the use of VBA switch statements, any help would be very appreciated, I'm still getting to know the language.
Essentially, I have a column of integer values which I would like to iterate through. The integers in the column vary from 12 to -12 with the exception of 0, so 24 possible integer values here.
For each possible value, I would like the activecell.offset(0,7) value added to a variable.
So if I iterate from cell A1 to cell A10, each time a value of "1" appears, I would like the cell 7 spaces to the right of the "1" cell added to a "total" variable for "1" e.g.: "totalOne".
The same applies for every value within my range. So if there are three instances of the value "8" between A1 and A10, then each value 7 cells right of those "8" values will be added to a total value for the value 8.
I started to use:
select case range("u4:u150"). value
case 1
Dim value1 = value1 + ActiveCell.offset(0, 7).Value
However, at this point I realised that a switch statement stores the range I have given it as an array, so my 'case 1' cannot work as it is trying to compare an integer with an array.
Finally, if it stores an array, surely it wouldn't be able to get cell.offset values as it would have no references to those locations given that the array is just a group of integers, not actual cell references? Will I have to use lots of "for each" statements? hope not!
Finally, somebody simply told me to look at 'sumif' statements instead but i'm still no clearer.
Thanks guys for your time. Any questions, please ask.
I have a question regarding the use of VBA switch statements, any help would be very appreciated, I'm still getting to know the language.
Essentially, I have a column of integer values which I would like to iterate through. The integers in the column vary from 12 to -12 with the exception of 0, so 24 possible integer values here.
For each possible value, I would like the activecell.offset(0,7) value added to a variable.
So if I iterate from cell A1 to cell A10, each time a value of "1" appears, I would like the cell 7 spaces to the right of the "1" cell added to a "total" variable for "1" e.g.: "totalOne".
The same applies for every value within my range. So if there are three instances of the value "8" between A1 and A10, then each value 7 cells right of those "8" values will be added to a total value for the value 8.
I started to use:
select case range("u4:u150"). value
case 1
Dim value1 = value1 + ActiveCell.offset(0, 7).Value
However, at this point I realised that a switch statement stores the range I have given it as an array, so my 'case 1' cannot work as it is trying to compare an integer with an array.
Finally, if it stores an array, surely it wouldn't be able to get cell.offset values as it would have no references to those locations given that the array is just a group of integers, not actual cell references? Will I have to use lots of "for each" statements? hope not!
Finally, somebody simply told me to look at 'sumif' statements instead but i'm still no clearer.
Thanks guys for your time. Any questions, please ask.