Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default period of sum of sine waves

I'm trying to create a function to calculate the period of a sum of
sinusoids. This is nothing more than the least common multiple of the
periods of all contributions. I note that worksheet function LCM does
not appear to be available in VBA. But that wouldn't work anyway since
it can't handle real arguments, so I create my own called LCM_real.
Problem with LCM_real is that it only accepts 2 arguments, but that can
be solved through using it in a looping function. I would like this
function to operate like the worksheet one, in that you can place in the
argument up to 29 sine wave periods separated by commas, or you can
enter a range (no commas). I have the following code for comma
delimited argument:

Function PeriodOfSinuSum(ParamArray T() As Variant) As Double
Dim i As Integer, tmp As Double
tmp = LCM_Real(T(0), T(1))
For i = 2 To UBound(T())
tmp = LCM_Real(tmp, T(i))
Next i
PeriodOfSinuSum = tmp
End Function

I note that this function doesn't work if you try entering a range, so I
come up with another one for that purpose:

Function PeriodOfSinuSumRange(T As Range) As Double
Dim i As Integer, tmp As Double
tmp = LCM_Real(T(1), T(2))
For i = 3 To UBound(T())
tmp = LCM_Real(tmp, T(i))
Next i
PeriodOfSinuSumRange = tmp
End Function

This one works with a range, but doesn't work if you input each period
separated by a comma. Can anyone recommend a single function that will
accept both types of input?

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 55
Default period of sum of sine waves

I don't really understand the background <grin, but
perhaps a suggestion might solve the actual challenge ?

This is, to create a User Defined Function (UDF) that
will accept both discreet entries or a range - is that
right ?

How about something along the lines of ;

Function myAnswer(Optional myRange as Range, _
Optional myNum1, _
Optional myNum2, _
Optional myNum3, _
Optional myNum4, _
Optional myNum5, _
Optional myNum6, _
Optional myNum7, etc. ... )

Then, if the user is inputting a Range,
she just bangs it in

= myAnswer(F1:J7)

but if you want individual entries,
then you put a comma first,
e.g.
= myAnswer(,F1,J7,Q9,K9)

-----Original Message-----
I'm trying to create a function to calculate
the period of a sum of sinusoids.

....
I would like this
function to operate like the worksheet one,
in that you can place in the
argument up to 29 sine wave periods
separated by commas, or you can
enter a range (no commas).

......
This one works with a range,
but doesn't work if you input each period
separated by a comma.
Can anyone recommend a single function that will
accept both types of input?


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 280
Default period of sum of sine waves

Look up ParamArray. There are examples. ParamArray allows a procedure to
accept a variable number of arguments. You'll have to choose a type that is
most appropriate and handle interpretation of the arguments.

"Robin Clay" wrote in message
...
I don't really understand the background <grin, but
perhaps a suggestion might solve the actual challenge ?

This is, to create a User Defined Function (UDF) that
will accept both discreet entries or a range - is that
right ?

How about something along the lines of ;

Function myAnswer(Optional myRange as Range, _
Optional myNum1, _
Optional myNum2, _
Optional myNum3, _
Optional myNum4, _
Optional myNum5, _
Optional myNum6, _
Optional myNum7, etc. ... )

Then, if the user is inputting a Range,
she just bangs it in

= myAnswer(F1:J7)

but if you want individual entries,
then you put a comma first,
e.g.
= myAnswer(,F1,J7,Q9,K9)

-----Original Message-----
I'm trying to create a function to calculate
the period of a sum of sinusoids.

...
I would like this
function to operate like the worksheet one,
in that you can place in the
argument up to 29 sine wave periods
separated by commas, or you can
enter a range (no commas).

.....
This one works with a range,
but doesn't work if you input each period
separated by a comma.
Can anyone recommend a single function that will
accept both types of input?




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default period of sum of sine waves

Thanks, Robin. What I wanted boiled down to creating a user defined
function that will accept both discreet entries or a range. I branched
off your idea to the following:

Function PeriodOfSinuSum(T1 As Range, Optional T2 As Range, _
Optional T3 As Range, Optional T4 As Range) As Double
'This function returns the period of a sum of sinusoids
'T1, T2, etc. are the period ranges, up to 4 (or whatever)
Dim i As Integer, Tmp As Double
On Error Resume Next
Tmp = 1
For i = 1 To T1.Cells.Count
Tmp = LCM_Real(Tmp, T1(i))
Next i
For i = 1 To T2.Cells.Count
Tmp = LCM_Real(Tmp, T2(i))
Next i
For i = 1 To T3.Cells.Count
Tmp = LCM_Real(Tmp, T3(i))
Next i
For i = 1 To T4.Cells.Count
Tmp = LCM_Real(Tmp, T4(i))
Next i
PeriodOfSinuSum = Tmp
End Function

This function seems to behave like the worksheet LCM function in that it
can accept one or more ranges or constants separated by commas. It is
an improvement over LCM because it can deal with real numbers. Your
input got me over the hump. Thanks again.

Robin Clay wrote:

I don't really understand the background <grin, but
perhaps a suggestion might solve the actual challenge ?

This is, to create a User Defined Function (UDF) that
will accept both discreet entries or a range - is that
right ?

How about something along the lines of ;

Function myAnswer(Optional myRange as Range, _
Optional myNum1, _
Optional myNum2, _
Optional myNum3, _
Optional myNum4, _
Optional myNum5, _
Optional myNum6, _
Optional myNum7, etc. ... )

Then, if the user is inputting a Range,
she just bangs it in

= myAnswer(F1:J7)

but if you want individual entries,
then you put a comma first,
e.g.
= myAnswer(,F1,J7,Q9,K9)


-----Original Message-----
I'm trying to create a function to calculate
the period of a sum of sinusoids.

...

I would like this
function to operate like the worksheet one,
in that you can place in the
argument up to 29 sine wave periods
separated by commas, or you can
enter a range (no commas).

.....

This one works with a range,
but doesn't work if you input each period
separated by a comma.
Can anyone recommend a single function that will
accept both types of input?



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
sine wave trendline Amedee Van Gasse Charts and Charting in Excel 8 April 4th 23 02:15 PM
Sine trendline in scatter? Thora Charts and Charting in Excel 5 May 19th 09 01:53 PM
Period to Period percentage change? cs120 Excel Discussion (Misc queries) 1 September 18th 05 12:05 PM
sine wave trendline Amedee Van Gasse Excel Discussion (Misc queries) 10 July 12th 05 04:01 PM
how do I use "inv sine" in a worksheet Elimits Excel Worksheet Functions 1 November 17th 04 05:55 PM


All times are GMT +1. The time now is 04:06 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"