View Single Post
  #1   Report Post  
rhay999 rhay999 is offline
Junior Member
 
Posts: 5
Default MOREFUNC.XLL - RECALL() to trigger once only calculation?

I'd be very grateful if someone can help with this - tearing my hair out!

I have a charting application "pushing" data record by record (row by row) directly into an Excel worksheet. There are no DDE statements involved in Excel.

I need to get a snapshot of calculations at specific points in time - when a new record comes in. Unfortunately, Excel keeps on re-calculating everything from scratch each time a new record/row comes in, overwriting previous results.

When a row is filled (say columns A-H) then calculations will be done (in column I) based on calculation on this row and other data held in other worksheets. However, this calculation in I (or a copy of it in another column) must remain permanent after it has done this first calculation as data in the other worksheets will change thereafter.

I've now spent ages trying to get this up and running without success. I have tried using RECALL but am finding it really difficult to get the right coding - IF it can be used with DDE updates rather than manual updates.

Would be really grateful of a reply from someone.

Thanks again.

Richard

Recall summary from http://www.rhdatasolutions.com/morefunc/#RECALL

RECALL

Returns the former contents of the caller cell (its contents before the last calculation).

SYNTAX :
=RECALL(Static)

- Static (boolean, optional) : if TRUE, the function is static (non-volatile). Default : FALSE.

If the formula of the caller uses or refers to a cell which uses a volatile function (RAND, INDIRECT, OFFSET...), this argument should not be set to TRUE.

EXAMPLES :

=RECALL()+1 : counts the number of recalculations in Excel.

=IF(A1RECALL(),A1,RECALL()) : returns the higher number which the cell A1 has ever contained.

=IF(MAX(A1:B10)RECALL(),MAX(A1:B10),RECALL()) : returns the higher number which the range A1:B10 has contained.

=RECALL(TRUE)+A1 : returns a cumulative sum of all values which have appeared in the cell A1.

=IF(COUNTA(A1)+1,RECALL(TRUE)+1) : counts how many times the contents of A1 have changed.

=IF(COUNTA(A1:B10),RECALL(TRUE)+1,0) : counts how many times the contents of any cell in A1:B10 has changed, or returns 0 if this range has been cleared.

=RECALL(TRUE)+(A2500) : counts how many times the value of A2 has been greater than 500.