Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Problem with UDF

I have this UDF:

Function FLOPSLAG(ops As Variant, num As Single, rn As Range, ofs As
Byte)
Dim Taeller As Long
Dim i As Long
i = 0
For Each c In rn.Columns(1).Cells
If c.Value = ops Then
i = i + 1
End If
Next c
If num - CInt(num) < 0 Or num < 1 Then
FLOPSLAG = CVErr(xlErrNum)
Exit Function
End If
If i < num Then
FLOPSLAG = CVErr(xlErrNA)
Exit Function
End If
Taeller = 0
For Each c In rn.Columns(1).Cells
If c.Value = ops.Value Then
Taeller = Taeller + 1
If Taeller = num Then
FLOPSLAG = c.Offset(0, ofs - 1).Value
Exit Function
End If
End If
Next c
End Function

Is there any way to build i kind of "target" function, so the UDF is
only updated if changes appears i column J in the spreadsheet.I
cannnot change it to a macro, as it has to be a part of a formula.

Jan
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Problem with UDF

Use the following

Col = Application.Caller.Column


" wrote:

I have this UDF:

Function FLOPSLAG(ops As Variant, num As Single, rn As Range, ofs As
Byte)
Dim Taeller As Long
Dim i As Long
i = 0
For Each c In rn.Columns(1).Cells
If c.Value = ops Then
i = i + 1
End If
Next c
If num - CInt(num) < 0 Or num < 1 Then
FLOPSLAG = CVErr(xlErrNum)
Exit Function
End If
If i < num Then
FLOPSLAG = CVErr(xlErrNA)
Exit Function
End If
Taeller = 0
For Each c In rn.Columns(1).Cells
If c.Value = ops.Value Then
Taeller = Taeller + 1
If Taeller = num Then
FLOPSLAG = c.Offset(0, ofs - 1).Value
Exit Function
End If
End If
Next c
End Function

Is there any way to build i kind of "target" function, so the UDF is
only updated if changes appears i column J in the spreadsheet.I
cannnot change it to a macro, as it has to be a part of a formula.

Jan

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 99
Default Problem with UDF

The problem is, that this returns the columns the UDF id places in, or have
I misunderstood something?

In column A in one sheet I have this formula:
=flopslag(I2;COUNTIF($I$2:I2;I2);Opslag;2), where FLOPSLAG is my UDF.

Opslag is a named array in another sheet.

This formula is copied to about 60.000 rows in the sheet. WheneverIi type
something anywhere in the sheet the all the formulas are recalculated, which
takes about 30 minutes. The prolem is, that the output of the formulas only
change, if I type in column A, so I want to avoid recalculation if I change
anywhere else than column J.

Jan



Joel wrote:
Use the following

Col = Application.Caller.Column




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default Problem with UDF

Then use a worksheet changge function rather than a formula. the problem is
when a formula is a function of another cell you can't tell which cell change
to trigger the worksheet re-calculation using the UDF. The worksheet change
will know which cell actually caused the worksheet to be caculated.

"Jan Kronsell" wrote:

The problem is, that this returns the columns the UDF id places in, or have
I misunderstood something?

In column A in one sheet I have this formula:
=flopslag(I2;COUNTIF($I$2:I2;I2);Opslag;2), where FLOPSLAG is my UDF.

Opslag is a named array in another sheet.

This formula is copied to about 60.000 rows in the sheet. WheneverIi type
something anywhere in the sheet the all the formulas are recalculated, which
takes about 30 minutes. The prolem is, that the output of the formulas only
change, if I type in column A, so I want to avoid recalculation if I change
anywhere else than column J.

Jan



Joel wrote:
Use the following

Col = Application.Caller.Column





  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 99
Default Problem with UDF

Maybe thats is the onkly solution.

Jan

Joel wrote:
Then use a worksheet changge function rather than a formula. the
problem is when a formula is a function of another cell you can't
tell which cell change to trigger the worksheet re-calculation using
the UDF. The worksheet change will know which cell actually caused
the worksheet to be caculated.

"Jan Kronsell" wrote:

The problem is, that this returns the columns the UDF id places in,
or have I misunderstood something?

In column A in one sheet I have this formula:
=flopslag(I2;COUNTIF($I$2:I2;I2);Opslag;2), where FLOPSLAG is my UDF.

Opslag is a named array in another sheet.

This formula is copied to about 60.000 rows in the sheet. WheneverIi
type something anywhere in the sheet the all the formulas are
recalculated, which takes about 30 minutes. The prolem is, that the
output of the formulas only change, if I type in column A, so I want
to avoid recalculation if I change anywhere else than column J.

Jan



Joel wrote:
Use the following

Col = Application.Caller.Column



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
Colon at the end of excel file name(ex: problem.xls:1, problem.xls financeguy New Users to Excel 2 January 15th 10 01:15 AM
Started out as an Access problem. Now an Excel problem RobertM Excel Discussion (Misc queries) 2 April 26th 06 07:30 PM
problem with a conditional max problem Brian Cornejo Excel Discussion (Misc queries) 1 February 18th 05 06:25 PM
Problem when multipple users access shared xl-file at the same time, macrocode for solve this problem? OCI Excel Programming 0 May 16th 04 10:40 PM


All times are GMT +1. The time now is 08:57 AM.

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"