CUSIP: Difference between revisions

Content added Content deleted
(→‎{{header|Excel LAMBDA}}: Added a draft using the LAMBDA() function which is defined in recent Excel beta builds.)
m (→‎Excel LAMBDA: (Preferred AND to IF))
Line 1,198: Line 1,198:
(See [https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA: The ultimate Excel worksheet function])
(See [https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA: The ultimate Excel worksheet function])


<lang lisp>ISCUSIP
<lang lisp>=LAMBDA(s,
=LAMBDA(s,
LET(
LET(
ns, VLOOKUP(
ns, VLOOKUP(
CHARS(s), CUSIPMAP, 2, FALSE
CHARS(s), CUSIPMAP, 2, FALSE
),
),

IF(9 = COLUMNS(ns),
AND(
9 = COLUMNS(ns),
LET(
LET(
firstEight, INITCOLS(ns),
firstEight, INITCOLS(ns),

ixs, SEQUENCE(1, 8),
ixs, SEQUENCE(1, 8),

evensDoubled, IF(ISEVEN(ixs),
evensDoubled, IF(ISEVEN(ixs),
2 * INDEX(firstEight, 1, ixs),
2 * INDEX(firstEight, 1, ixs),
INDEX(firstEight, 1, ixs)
INDEX(firstEight, 1, ixs)
),
),

LASTCOL(ns) = MOD(
LASTCOL(ns) = MOD(
10 - MOD(
10 - MOD(
Line 1,221: Line 1,221:
QUOTIENT(evensDoubled, 10),
QUOTIENT(evensDoubled, 10),
MOD(evensDoubled, 10)
MOD(evensDoubled, 10)
),
),
10
10
),
),
10
10
)
)
),
)
FALSE
)
)
)
)