Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Whats wrong with this? I get a #VALUE error:
Function DotProd(Vector1) DotProd = Rows(Vector1) End Function -- Thanks for your help |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
A function has to have a return type (long, integer, double, string,
etc.) depending on the value of what you are returning. Also, exactly what is Vector1? Is it a range of cells or an array of values? What about DotProd? Is it the product of all of the values of the cells in Vector1? Show us the math that would normally be done. One possible interpretation (assuming Vector1 is a Range) (not tested): Public Function DotProd(Vector1 as Range) as Double Dim rngCell as Range Dim dblDotProd as Double dblDotProd = 1 For each rngCell in Vector1 dblDotProd = dblDotProd*rngCell.Value next rngCell DotProd = dblDotProd End Function -- Regards, Bill Renaud |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Thu, 16 Aug 2007 21:20:17 -0500, "Bill Renaud"
wrote: A function has to have a return type (long, integer, double, string, etc.) A function will have a return type, but if it is not specified, as in the OP's post, the return type will be a Variant. --ron |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
On Thu, 16 Aug 2007 18:19:46 -0700, LesHurley
wrote: Whats wrong with this? I get a #VALUE error: Function DotProd(Vector1) DotProd = Rows(Vector1) End Function What's "wrong" is that you are trying to return an object. Without knowing what you are trying to do, it's hard to know how to advise you. If you want a count of the rows in Vector 1, then try: DotProd = Vector1.Rows.Count If you want something else, you'll have to let us know. --ron |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks everyone for your suggestions. Actually, the code I posted is a very
simple and complete version of of what I'm trying to do. You no doubt have guessed that I am a complete new-comer to VBA programming. After a lot of head scratching I came up with the code that Ron suggested and it works fine. The function name is unimportant but it will eventually be a dotproduct routine that doesn't care about the orientation of the two vectors. I'm nearly finished with that. My next project will be to row-reduce a matrix to canonical and echelon form. In that case I will have to return another matrix, and I havent figured out how to do that. Any suggestions would be welcome. -- Thanks for your help "Ron Rosenfeld" wrote: On Thu, 16 Aug 2007 18:19:46 -0700, LesHurley wrote: Whats wrong with this? I get a #VALUE error: Function DotProd(Vector1) DotProd = Rows(Vector1) End Function What's "wrong" is that you are trying to return an object. Without knowing what you are trying to do, it's hard to know how to advise you. If you want a count of the rows in Vector 1, then try: DotProd = Vector1.Rows.Count If you want something else, you'll have to let us know. --ron |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
DotProd = Rows(Vector1)
Just throwing out two ideas. Sub Demo() Dim v, d v = [A1:A3].Value d = WorksheetFunction.SumSq(v) 'or d = DotProduct(v, v) End Sub Function DotProduct(x, y) DotProduct = WorksheetFunction.SumProduct(x, y) End Function -- Dana DeLouis "LesHurley" wrote in message ... Thanks everyone for your suggestions. Actually, the code I posted is a very simple and complete version of of what I'm trying to do. You no doubt have guessed that I am a complete new-comer to VBA programming. After a lot of head scratching I came up with the code that Ron suggested and it works fine. The function name is unimportant but it will eventually be a dotproduct routine that doesn't care about the orientation of the two vectors. I'm nearly finished with that. My next project will be to row-reduce a matrix to canonical and echelon form. In that case I will have to return another matrix, and I havent figured out how to do that. Any suggestions would be welcome. -- Thanks for your help "Ron Rosenfeld" wrote: On Thu, 16 Aug 2007 18:19:46 -0700, LesHurley wrote: Whats wrong with this? I get a #VALUE error: Function DotProd(Vector1) DotProd = Rows(Vector1) End Function What's "wrong" is that you are trying to return an object. Without knowing what you are trying to do, it's hard to know how to advise you. If you want a count of the rows in Vector 1, then try: DotProd = Vector1.Rows.Count If you want something else, you'll have to let us know. --ron |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How to convert cell formula functions to code functions | Excel Discussion (Misc queries) | |||
efficiency: database functions vs. math functions vs. array formula | Excel Discussion (Misc queries) | |||
Looking for a site with functions that substitute the ATP functions | Excel Worksheet Functions | |||
Conversion from Spreadsheet Toolkit functions (ESSV....) to EssBase API functions | Excel Programming | |||
excel functions and User defined functions | Excel Programming |