Any ideas?
=PRODUCT(--(CODE(MID(A2,ROW(INDIRECT("1:2")),1))>=65))*PRODUCT(--(CODE
(MID(A2,ROW(INDIRECT("1:2")),1))<=90))*PRODUCT(--ISNUMBER(--MID(A2,ROW
(INDIRECT("3:7")),1)))
A bit complex but ensures that no . or E will be used in the last five
digits.
HTH
Kostis Vezerides
AB12345xxxxxx
AB1234567890
This seems to work:
=SUM(2-LEN(SUBSTITUTE(LEFT(A2,2),CHAR(ROW(INDIRECT("65:90"))),"")),--(COUNT(-MID(A2,ROW(INDIRECT("3:7")),1))=5),--(LEN(A2)=7))=4
--
Biff
Microsoft Excel MVP
"vezerid" <vez...@act.edu> wrote in message
news:e5dd4e97-b952-43d7...@j39g2000yqn.googlegroups.com...
thanks for the new ideas you gave me.
Kostis
On Nov 28, 9:17Â pm, "T. Valko" <biffinp...@comcast.net> wrote:
> That allows more than 7 characters:
>
> AB12345xxxxxx
> AB1234567890
>
> This seems to work:
>
> =SUM(2-LEN(SUBSTITUTE(LEFT(A2,2),CHAR(ROW(INDIRECT("65:90"))),"")),--(COUNT(-MID(A2,ROW(INDIRECT("3:7")),1))=5),--(LEN(A2)=7))=4
>
> --
> Biff
> Microsoft Excel MVP
>
> "vezerid" <veze...@act.edu> wrote in message
=AND(EXACT(LEFT(A1,2),UPPER(LEFT(A1,2))),SUMPRODUCT(--ISNUMBER(--MID(A1,ROW($1:$99),1)))=5)
--
Rick (MVP - Excel)
"T. Valko" <biffi...@comcast.net> wrote in message
news:ue4Gv3YU...@TK2MSFTNGP06.phx.gbl...
I'm always looking for new ideas myself!
--
Biff
Microsoft Excel MVP
"vezerid" <vez...@act.edu> wrote in message
news:49c42c6d-50ff-469a...@k8g2000yqn.googlegroups.com...
--
Rick (MVP - Excel)
"Rick Rothstein" <rick.new...@NO.SPAMverizon.net> wrote in message
news:OdYYzEZU...@TK2MSFTNGP02.phx.gbl...
' 12345
That is: apostrophe<space><space>12345
--
Biff
Microsoft Excel MVP
"Rick Rothstein" <rick.new...@NO.SPAMverizon.net> wrote in message
news:OdYYzEZU...@TK2MSFTNGP02.phx.gbl...
--
Rick (MVP - Excel)
"T. Valko" <biffi...@comcast.net> wrote in message
news:OooMdOZU...@TK2MSFTNGP03.phx.gbl...
=SUMPRODUCT(--(ABS(CODE(MID(A20,ROW($1:$2),1))-77.5)<=12.5))+SUMPRODUCT(--ISNUMBER(--MID(A20,ROW($3:$99),1)))=7
--
Rick (MVP - Excel)
"T. Valko" <biffi...@comcast.net> wrote in message
news:ue4Gv3YU...@TK2MSFTNGP06.phx.gbl...
>it does get rid of the volatile function calls (I wonder if that matter in
>a validation formula)
Well, it leaves the formula vulnerable to row insertions and it accepts more
than 7 characters. It appears that a formula with a volatile function used
as a validation rule doesn't "act" volatile. In a test file I entered the
validation rule using INDIRECT. Closed the file, opened the file, didn't do
anything at all, then closed the file without Excel asking if I wanted to
save changes ( a telltale sign that a volatile function is in use)
We can shorten it by a few more keystrokes while at the same time adding a
length test since a formula entered in a refedit is automatically processed
as an array:
=SUM(--(LEN(A2)=7),--(ABS(CODE(MID(A2,ROW($1:$2),1))-77.5)<=12.5),COUNT(-MID(A2,ROW($3:$7),1)))=8
So, as long as you don't insert new rows (in certain places) that looks
pretty good.
--
Biff
Microsoft Excel MVP
"Rick Rothstein" <rick.new...@NO.SPAMverizon.net> wrote in message
news:OFRIHmZU...@TK2MSFTNGP06.phx.gbl...
So then, I guess INDIRECT is indirect only when used directly.<g>
Yes, using the automatic array process is definitely better. Of course, I
tested my logic out on the grid directly and used SUMPRODUCT during testing
to avoid hitting the Ctrl+Shift+Enter (just lazy on my part); then, because
my wife wanted to use the computer, I rushed posting my findings without
even thinking about the array processing part of it.
Thanks for catching all the issue I missed.
--
Rick (MVP - Excel)
"T. Valko" <biffi...@comcast.net> wrote in message
news:OJ$XMkaUJ...@TK2MSFTNGP05.phx.gbl...
Try this formula. While in cell B85, enter this in Data > Validation >
Custom.
=AND(LEN(B85)=7,CODE(LEFT(B85,1))>=65,CODE(LEFT(B85,1))<=90,CODE(MID(B85,2,1))>=65,CODE(MID(B85,2,1))<=90,ISNUMBER(1*RIGHT(B85,5)))
--
Regards,
Ashish Mathur
Microsoft Excel MVP
www.ashishmathur.com
<brd...@gmail.com> wrote in message
news:89b9132f-20ad-4875...@w3g2000yqc.googlegroups.com...
AB123.5
AB123e5
--
Rick (MVP - Excel)
"Ashish Mathur" <mathur...@hotmail.com> wrote in message
news:74B89780-FC7A-4453...@microsoft.com...
Or avoiding the volatile INDIRECT function but taking advantage of
ASCII encoding,
=AND(LEN(x)=7,ABS(CODE(MID(x,{1;2},1))-77.5)<13,COUNT(-MID(x,
{3;4;5;6;7},1))=5)
Thank you for your comments. In the original question, it has been
mentioned that the last 5 characters are numbers - therefore the possibility
of having a . or e is ruled out.
--
Regards,
Ashish Mathur
Microsoft Excel MVP
www.ashishmathur.com
"Rick Rothstein" <rick.new...@NO.SPAMverizon.net> wrote in message
news:#Ud9cYcU...@TK2MSFTNGP05.phx.gbl...
--
Rick (MVP - Excel)
"Ashish Mathur" <mathur...@hotmail.com> wrote in message
news:28AB51C1-5CAA-402E...@microsoft.com...
Nice one, Harlan.
I should've realized we could use array constants rather than
ROW(INDIRECT(...)) since it's only a few characters.
About the volatile INDIRECT...
> "T. Valko" wrote...
>It appears that a formula with a volatile function used
>as a validation rule doesn't "act" volatile. In a test file
>I entered the validation rule using INDIRECT. Closed
>the file, opened the file, didn't do anything at all, then
>closed the file without Excel asking if I wanted to save
>changes ( a telltale sign that a volatile function is in use)
Any thoughts on that?
Agreed. Thank you for the clarification.
--
Regards,
Ashish Mathur
Microsoft Excel MVP
www.ashishmathur.com
"Rick Rothstein" <rick.new...@NO.SPAMverizon.net> wrote in message
news:eG3hR7c...@TK2MSFTNGP06.phx.gbl...
Validation rules only apply when you enter something into cells with
validation rules. If you're not entering anything, e.g., when saving
files, then the validation rule wouldn't be evaluated. Key point:
validation rules are OUTSIDE the calculation dependency tree.
Validation permits initial entry, which in turn triggers minimal
recalc, which also recalcs all formulas that call volatile functions,
then evaluates the validation rule and takes appropriate action. In
that context, custom validation formulas are ALWAYS volatile no matter
what functions they call since validation rules are ALWAYS evaluated
upon entry.
Also, FWIW, if you select multiple cells, if the active cell doesn't
contain a validation rule but other selectedd cells do contain
validation rules, you could type anything you want in the active cell
and press [Ctrl]+[Enter], and Excel will happily enter the active
cell's value into all the cells without triggering validation in the
other selected cells. IOW, validation rules are only evaluated for the
active cell at the time of entry. And, as commonly known, validation
isn't triggered by pasting into cells with validation rules. If the
OP's users could be pasting values in from other programs (e.g.,
copying from PDF files), no validation rule will help. Only event
handlers and validation formulas in other cells provide relatively
robust validation. Excel's own Data Validation feature is an
unreliable toy, as industrial strength (NOT!) as internal passwords.
--
Biff
Microsoft Excel MVP
"T. Valko" <biffi...@comcast.net> wrote in message
news:u7Pn9GdU...@TK2MSFTNGP06.phx.gbl...
> "Harlan Grove" <hrl...@gmail.com> wrote in message
> news:80f3b032-37b9-4d80...@40g2000prx.googlegroups.com...
>> "T. Valko" <biffinp...@comcast.net> wrote...
>> ...
>>>This seems to work:
>>>
>>>=SUM(2-LEN(SUBSTITUTE(LEFT(A2,2),CHAR(ROW(INDIRECT("65:90"))),"")),
>>>--(COUNT(-MID(A2,ROW(INDIRECT("3:7")),1))=5),--(LEN(A2)=7))=4
>> ...
>>
>> Or avoiding the volatile INDIRECT function but taking advantage of
>> ASCII encoding,
>>
>> =AND(LEN(x)=7,ABS(CODE(MID(x,{1;2},1))-77.5)<13,COUNT(-MID(x,
>> {3;4;5;6;7},1))=5)
>
> Nice one, Harlan.
>
> I should've realized we could use array constants rather than
> ROW(INDIRECT(...)) since it's only a few characters.
Ooops!
I can't believe that between us we didn't catch this...
Can't use array constants in a Data>Validation>Custom rule.
OK, should have causght that.
=AND(ABS(CODE(A1)-77.5)<13,ABS(CODE(MID(A1,2,1))-77.5)<13,
COUNT(1/(MID(A1,3,6)=TEXT(--MID(A1,3,5),"00000"))))
Note that the 6 as 3rd arg in the 1st MID call is intentional. It
eliminates the need for a LEN test.
"Harlan Grove" <hrl...@gmail.com> wrote in message
news:d067d57f-5ceb-4e86...@40g2000prx.googlegroups.com...
>COUNT(1/(MID(A1,3,6)=TEXT(--MID(A1,3,5),"00000")))
This seems to work just as well:
MID(A1,3,6)=TEXT(--MID(A1,3,5),"00000")