![]() |
|
|
| Subject:
Convert excel formula into user defined function
Category: Computers > Software Asked by: herzigma-ga List Price: $15.00 |
Posted:
14 Apr 2006 08:03 PDT
Expires: 14 May 2006 08:03 PDT Question ID: 718857 |
I have the following formula: =IF(ISERROR(VLOOKUP(RC1,Outstanding_issues,3,FALSE)),if(iserror(VLOOKUP(RC1,Closed_issues,3,FALSE)),"",if(len(VLOOKUP(RC1,Closed_issues,3,FALSE))>40,CONCATENATE(LEFT(VLOOKUP(RC1,Closed_issues,3,FALSE),40),"..."),VLOOKUP(RC1,Closed_issues,3,FALSE))),IF(LEN(VLOOKUP(RC1,Outstanding_issues,3,FALSE))>40,CONCATENATE(LEFT(VLOOKUP(RC1,Outstanding_issues,3,FALSE),40),"..."),VLOOKUP(RC1,Outstanding_issues,3 ,FALSE))) "Outstand_issues" and "Closed_issues" are both named dynamic ranges defined w/ the following formulae, respectively: =OFFSET(Outstanding!R4C1,0,0,COUNTA(Outstanding!R4C1:R5977C1),30) =OFFSET(Closed!R4C1,0,0,COUNTA(Closed!R4C1:R5977C1),30) I would like to replace this with a user defined function. Tip of $10 (or tell me what's reasonable) if you can provide the custom function yourself. The amount listed is for instructions on how to convert the formula myself without rewriting in VB. |
|
| There is no answer at this time. |
|
| Subject:
Re: Convert excel formula into user defined function
From: manuka-ga on 19 Apr 2006 00:46 PDT |
This seems to do the trick. You'll need to create a new module in VBA
and add this code to it; it won't be visible to the worksheet if you
just dump it in the workbook or worksheet code sheets (don't ask me
why; you'd think of all places the worksheet could see, its own code
would be at the top of the list).
Once you've done that and saved the workbook, you should be able to
use it in a formula by simply entering "=IssueText(RC1)".
Some caveats: Since this is a user-defined function, Excel no longer
recognises that the result of the formula depends on the values in the
Closed_issues and Outstanding_issues ranges. You can recalculate cells
manually (F2 and Enter) or you can recalculate a whole sheet
(Shift-F9) or all sheets (F9). Alternatively, if you must have
automatic recalculation, you can use VBA to trigger one when the data
is updated; but that gets messy, so I'mnot including it here.
Please let me know if you have any problems with this. Good luck!
Manuka-ga
Option Explicit
Function ChopString(S As String) As String
Const MaxLen = 40
If Len(S) > MaxLen Then
ChopString = Left$(S, MaxLen) & "..."
Else
ChopString = S
End If
End Function
Public Function IssueText(Cell As Range) As String
Dim Closed_String As String, Outstanding_String As String
With Application.WorksheetFunction
On Error GoTo NotClosed
Closed_String = .VLookup(Cell, Range("Closed_issues"), 3, False)
On Error GoTo NotOutstanding
Outstanding_String = .VLookup(Cell, Range("Outstanding_issues"), 3, False)
On Error GoTo 0
End With
Closed_String = ChopString(Closed_String)
Outstanding_String = ChopString(Outstanding_String)
If Outstanding_String = "" Then
IssueText = Closed_String
Else
IssueText = Outstanding_String
End If
Exit Function
NotClosed:
Closed_String = ""
Err.Clear
Resume Next
NotOutstanding:
Outstanding_String = ""
Err.Clear
Resume Next
End Function |
| Subject:
Re: Convert excel formula into user defined function
From: herzigma-ga on 01 May 2006 05:15 PDT |
Thanks very much. I was travelling for work and was unable to log in and check the answers, but if this works it will be perfect. Thanks, Josh |
| Subject:
Re: Convert excel formula into user defined function
From: herzigma-ga on 28 Jun 2006 06:19 PDT |
manuka - I apologoze for ignoring this. Please post an answer and I'll add on a tip. Thanks, |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
| Search Google Answers for |
| Google Home - Answers FAQ - Terms of Service - Privacy Policy |