MS Office Forum / Excel / Worksheet Functions / July 2008
How to tell if cell contains a FORMULA or user-entered number?
|
|
Thread rating:  |
rcmodelr - 19 Jun 2005 16:31 GMT I have a spreadsheet to maintain truck weights.
If the weighmaster enters a Gross, and a Secondary Gross, the spreadsheet should calculate the amount of shrink (Gross - Secondary Gross).
If the weighmaster enters ONLY a Gross and a Tare weight, the spreadsheet should give an ESTIMATED shrink calculation, then show the result of Gross - Estimated Shrink in the Secondary Gross column.
How can I do this??? Only way I could think of is with some way to determine whether Secondary Gross column cell contains a USER ENTERED NUMBER, or still has the formula to arrive at the ESTIMATED secondary weight. If Secondary Gross has a formula, then Shrink should be Gross * .005, and Secondary Gross should show result of Gross - Shrink.
If BOTH Gross AND Secondary Gross cells contain user entered numbers, Shrink should contain result of Gross - Secondary Gross.
Btw... My employer has Excel 2000. So please, if you have a solution, try to make it one I can implement in Excel 2000.
JMB - 19 Jun 2005 18:47 GMT You could set up a formula for secondary gross to test Tare to see if it is
>0. If the secondary gross is known, you could key over the formula. A B C D Gross 2ndary Gross Tare Shrink
B2: =IF(C2>0,A2*(1-0.005),0) D2: A2-B2
Or, you could set up an Estimated Secondary Gross column
A B C D E Gross 2ndary Gross Est 2ndaryGross Tare Shrink
C2: =IF(D2>0,A2*(1-0.005),0) E2: =IF(B2>0,A2-B2,A2-C2)
If Tare is not numeric you can change the >0 test to <>"" or use ISBLANK(D2)=FALSE. I don't know of a way (without using VBA) to test a cell for a formula versus a user entered value.
> I have a spreadsheet to maintain truck weights. > [quoted text clipped - 16 lines] > Btw... My employer has Excel 2000. So please, if you have a solution, try > to make it one I can implement in Excel 2000. rcmodelr - 19 Jun 2005 23:09 GMT That would work... EXCEPT that the secondary Gross cells by default have the formula to subtract contents of Shrink from Gross to arrive at an Estimated Secondary gross. So until a secondary gross, or both a Gross AND tare weight are entered, Secondary Gross is Null. Forgot to include. If No secondary Gross is entered, the Estimated Shrink is calculated from the NET Weight ( Gross - Tare).
So right now, I have 2 spreadsheet setup files... One for when the scale at the plant is working, and a second that figures strictly an estimated shrink as long as the trucks need to be weighed elsewhere.
a b C D E Gross Secondary Tare Net Shrink
Default cell contents
A Blank B Formula to give estimated secondary gross =A2-E2 C Blank D Formula (assuming in row 2) =A2 -C2 E. on sheet for estimated shrink =D2 * .005
Ideally, the formula for shrink should determine if secondary Gross still has the default formula or user entered number since THAT would determine how to calculate Shrink
If Secondary Gross is user-entered, Shrink should be Gross - Secondary Gross (=A2-B2) If Secondary Gross still contains default formula, Shrink should use Estimate (=D2*.005)
If nothing else, if you know how to do this with a user defined VBA function that could be used in the spreadsheet, tell me.
I already programmed the spreadsheet setup in VBA so to set up the sheet, the user only has to know the lot number, farm name, how many loads, and the catch count, and the VBA coding will set up the spreadsheet with properly placed total lines, grand totals, and correctly format the shift related summary page of the spreadsheet. So I'm by no means afraid to do this with an added in VBA coded spreadsheet function to test whether B2 contains a Formula.
> You could set up a formula for secondary gross to test Tare to see if it is > >0. If the secondary gross is known, you could key over the formula. [quoted text clipped - 40 lines] > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > to make it one I can implement in Excel 2000. JMB - 19 Jun 2005 23:26 GMT copy this into a VBA code module
Function ISFormula(Target As Range) ISFormula = Target.HasFormula End Function
In your worksheet for Shrink, enter =IF(ISFormula(B2),D2*.005,A2-B2)
> That would work... EXCEPT that the secondary Gross cells by default have the > formula to subtract contents of Shrink from Gross to arrive at an Estimated [quoted text clipped - 82 lines] > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > to make it one I can implement in Excel 2000. Ed Canuck - 31 Oct 2006 22:32 GMT Many thanks,
I was wracking my brains with the same problem.
Do you happen to know why IsRef doesn't equate to this? I tried to use IsRef, but it responds True when the cell contains a number that's not a formula.
Ed
> copy this into a VBA code module > [quoted text clipped - 91 lines] > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > to make it one I can implement in Excel 2000. JMB - 01 Nov 2006 04:41 GMT I've never used the ISREF function - so I don't know much about it. But it seems that
=ISREF(A1) returns True, since it is a reference to cell A1, while =ISREF("A1") returns False =ISREF(2) returns False
It appears that ISREF does not evaluate the target cell to see if it is a reference, only ISREF's immediate argument.
I s'pose one use could be to see if a dynamic named range exists. Consider the dynamic named range Test, which is defined as =OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1)
Basically, the named range doesn't exist until numeric data is entered into column A of sheet2. ISREF could be used to determine if the named range exists.
=IF(ISREF(Test), "Range Exists", "Range Does Not Exist")
> Many thanks, > [quoted text clipped - 101 lines] > > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > > to make it one I can implement in Excel 2000. Valerie - 03 Jan 2008 19:25 GMT This is great!! I have been wracking my brain trying to figure out a way to do this! This also works great with conditional formatting so I can tell which cells have been written over with text. Thanks! Valerie
> copy this into a VBA code module > [quoted text clipped - 91 lines] > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > to make it one I can implement in Excel 2000. JMB - 04 Jan 2008 04:51 GMT quite welcome - glad it helped.
> This is great!! I have been wracking my brain trying to figure out a way to > do this! This also works great with conditional formatting so I can tell [quoted text clipped - 97 lines] > > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > > to make it one I can implement in Excel 2000. Amarpas - 20 May 2008 17:29 GMT Thanks very much! I have also often wished for a formula-detecting formula! Can this VBA be used to create custom formulas, so long as the function makes sense in VBA?
Thanks, again. Amarpas
> quite welcome - glad it helped. > [quoted text clipped - 99 lines] > > > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > > > to make it one I can implement in Excel 2000. Rick Rothstein (MVP - VB) - 20 May 2008 17:40 GMT > Thanks very much! I have also often wished for a formula-detecting > formula! > Can this VBA be used to create custom formulas, so long as the function > makes sense in VBA? Yes, you can create a formula-detecting formula using VBA. In the VBA editor, click Insert/Module and copy/paste this code into the code window that appears...
Function CellHasFormula(CellReference As Range) As Boolean CellHasFormula = CellReference.HasFormula End Function
You can now use CellHasFormula just like any other worksheet function. For example...
=IF(CellHasFormula(A1),"Yes","No")
Rick
JMB - 20 May 2008 23:49 GMT Yes, you can use vba to create your own functions.
Just bear in mind that functions called from an XL worksheet cannot "do" things (such as formatting, putting values in other cells, etc) to the same extent that they can when called from another vba procedure - they can only return a value.
> Thanks very much! I have also often wished for a formula-detecting formula! > Can this VBA be used to create custom formulas, so long as the function [quoted text clipped - 106 lines] > > > > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try > > > > > > > to make it one I can implement in Excel 2000. AnimalMagic - 30 Jul 2008 01:47 GMT Can't one simply test for the presence of the = sign as the first character of the cell's contents? does a cell value poll always return the calculated result when a formula is present? What if "Show Formulas" is "on".
Can a formula for use in a cell be "created" on the fly with text strings which are assembled at runtime?
>Thanks very much! I have also often wished for a formula-detecting formula! >Can this VBA be used to create custom formulas, so long as the function [quoted text clipped - 106 lines] >> > > > > > Btw... My employer has Excel 2000. So please, if you have a solution, try >> > > > > > to make it one I can implement in Excel 2000.
|
|
|