Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Colon at the end of excel file name(ex: problem.xls:1, problem.xls | New Users to Excel | |||
Started out as an Access problem. Now an Excel problem | Excel Discussion (Misc queries) | |||
problem with a conditional max problem | Excel Discussion (Misc queries) | |||
Problem when multipple users access shared xl-file at the same time, macrocode for solve this problem? | Excel Programming |