View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Jerry W. Lewis Jerry W. Lewis is offline
external usenet poster
 
Posts: 837
Default Creating a UDF from a VBA routine...

Save it in an Add-In.

Jerry

"NWO" wrote:

Darn Jerry, that was quick - thank you.

Please bear with my ignorance, but how can I make this UDF work in different
workbooks by just using the function only. In other words, how can I make it
so I can treat the function just like any other Excel function (i. e.
=sumif(value1, value 2...valuen)) with out worrying about the underlying
code. The documentation isn't helping me so much.

Thank you again Jerry.

Mark :)
-------------

"Jerry W. Lewis" wrote:

Function CycleTime(receipts As Range, target As Double)
n = 0
Sum = 0
For Each c In receipts
If IsNumeric(c.Value) And Not IsEmpty(c.Value) Then ' count only
numeric cells
Sum = Sum + c.Value
If Sum target Then Exit For ' don't count the value that
causes target to be exceeded
n = n + 1
denom = Sum
last = c.Value
End If
Next c
CycleTime = n + (target - denom) / last
End Function

Jerry

"NWO" wrote:

Hello all.

(1) How can I convert the below routine to a UDF

(2) How can I run this routine using a sheet with about 30 different form
types, each with a string of monthly receipts? Guess what I'm asking is how
would I create a UDF in the form CYCYLETIME(INPUT REFERENCE RANGE, END
PENDING REFERENCE CELL) so I can repeat the use of the function across
several columns or rows nased on the UDFs input values.

Thank you.

Below posts refer.

Mark :)


"Gary''s Student" wrote:

This is just an example:

1. put monthly receipt values in column A
2. put the target (fixed) value in cell B1
3. enter and run this macro:


Sub Macro1()
Sum = 0
target = Cells(1, 2).Value
For i = 1 To 65536
Sum = Sum + Cells(i, 1).Value
If Sum = target Then Exit For
denom = Sum
If i = 65535 Then Exit Sub
Next
j = i - 1
result = (target - denom) / Cells(i, 1).Value
Cells(1, 3).Value = j + result
End Sub


It will perform the calculation and enter the result in cell C1. If you are
not familiar with macros, see:

http://www.mvps.org/dmcritchie/excel/getstarted.htm




--
Gary's Student


"NWO" wrote:

Hello all.

Here is my business problem for which I am seeking a solution:

Desired outcome - generate a cycle time based on varible number of input
values marked agianst a set vaue. Example, I have a fixed value of 1,000,
and a string of consecutive monthly receipt values (from nearest month to
farthest month), say 300, 200, 300, 450. I need a solution to determine how
many times of these values go into 1,000, and the last value expressed as a
decimal, if applicable. So, using the above vlaue would generate a cyckle
time of 3.4444. That is, 300 =1 because 300 < 100, 200 = 2, because 300+200
< 1000, 300 = 3 because 300+200+300 < 1,000., and the difference between
1,000 and 800 divided by 450 = .4444. I have tried countif, sumif, arrays,
and I just can;'t seem to find a solution other than manually performimng the
calucation every time.

Any ideas to create a specialized formula or function to handle this task?

Thank you.

Mark :)



Expand AllCollapse All