INSPECT is a powerful data inspection tool providing a summary of all unique values in the selected range/array along with their counts and data types; several additional type-based details for the specified data type; and the ability to exclude/include type(s) in order to focus the analysis on particular data type(s) within the reference
I got the idea for INSPECT while developing NTIMES, which uses the same exact core function, i.e. JAS (see below) to generate the list of unique values in the reference together with their counts and types. INSPECT allows for easily assessing the data, at a quick glance, to see what is contained within the reference and what the characteristics are. I wanted a solution that would be more detailed and useful than what is provided within the Excel status bar when some range is selected, but also I wanted this to be available for arrays as well.
The function output consists of three parts (see attached XL2BB examples): a) the upper left part contains a count of all five general data types (i.e. numbers, texts, blanks, logicals, and errors) and their total count after a blank column; b) the upper right part which appears only if the "type_specifics" parameter is used and provides additional details for the specified data type; and c) the lower three rows which appear after a blank row and display all the unique values in the reference, their counts, and their types.
(The code is modular (as all my other functions) allowing for easy swapping/optimizing over time. See all the modules below, after the description)
INSPECT takes five parameters, one required and four optional, as follows:
A) The first parameter, required, specifies the function input and can be a cell, range, or array
B) The second parameter, optional, provides sorting options for the lower "unique summary" portion of the output and takes one of seven arguments:
0 or omitted, for unsorted summary which displays the values in the order they occur in the reference
1, for sorting by count of values, in descending order
2, for sorting by count of values, in ascending order
3, for sorting by data type numbers (e.g. 1 for numbers and 2 for texts...) of values, in descending order
4, for sorting by data type numbers (e.g. 1 for numbers and 2 for texts...) of values, in ascending order
5, for sorting by the values, in descending order
6, for sorting by the values, in ascending order
Note that for arguments 3 and 4, the entire detailed XTYPE-based data types, which are shown at the last row of the output, are used for sorting; thus, argument 3 would emphasize the errors and logicals at the beginning of the output while argument 4 would emphasize numbers and texts (see the full list of types at section C below and the attached XL2BB)
C) The third argument, optional, specifies the data type for which additional details are needed and takes one of twenty-six arguments:
1, for number
2, for text
3, for blank
4, for logical
16, for error
31, for real blank
32, for formula blank
33, for space blank
34, for pasted blank
41, for TRUE
42, for FALSE
161, for #NULL! error
162, for #DIV/0! error
163, for #VALUE! error
164, for #REF! error
165, for #NAME? error
166, for #NUM! error
167, for #N/A error
168, for #GETTING_DATA error
169, for #SPILL! error
1610, for #CONNECT! error
1611, for #BLOCKED! error
1612, for #UNKNOWN! error
1613, for #FIELD! error
1614, for #CALC! error
1619, for #PYTHON! error
Note that only one type can be included in this parameter. Including more than one number (through array brackets) or any other data type will cause the function to crash to an #N/A
Note that if the reference does not contain the selected data type, or if the selected type is excluded by using the next two parameters (see sections D and E below), no details would be shown
D) The fourth parameter, optional, specifies the type(s) of data that can be excluded from the analysis and summary output and takes one or more of twenty-six arguments, specified in the third parameter in section C above
Note that if you need to enter more than one argument, you need to use the array brackets "{}" such as {1,3} for excluding numbers and blanks or {2,4,16} for excluding texts, logicals, and errors; see the attached XL2BB examples (the number of types permutations is huge; I have only shown a few examples); this parameter as well as the next (include_types) allow for a remarkable level of flexibility and full resolution for managing data types in the function output
Note that excluding type(s) may cause the output spill to auto-shrink, if the output contains the specified type(s)
Note that excluding type(s) that are not available in the reference will have no effect on the output
Note that if the reference contains only certain data types and all of these are excluded, or if all data types are excluded, e.g. by {1,2,3,4,16}, this will result in blank rows at the bottom section of the output and all the count numbers and the total at the upper left section will be zero
E) The fifth parameter, optional, specifies the type(s) of data that can be included in the analysis and summary output and takes one or more of twenty-six arguments, exactly like the fourth parameter in section D above
Note that both exclude_types and include_types cannot be used simultaneously
Note that using include_types (unless all types are included as by {1,2,3,4,16} for example) may also cause the main output spill to auto-shrink
Note that including type(s) that are not available in the output will result in blank rows at the bottom section of the output and all the count numbers and the total will be zero
(You can download my template from the link in my signature below, which makes it easier to obtain/test the functions compared to manually pasting from the text/XL2BB)
INSPECT
JAS (Returns a three-row summary of unique values in the reference, their counts, and their types) (also used as core for NTIMES)
JBC (Repeats the reference values by the number of times specified)
JBD (calculates "percent of total" for the specified data type and rounds the result to two digits)
JBE (returns data analytics summary for the specified data type)
XERROR.TYPE (posted separately)
XTYPE (posted separately)
PLS (stands for "parameter limit, single")
(Returns the parameter if it is a single entry (not blank or error) and #N/A otherwise)
(Causes the function to crash to a single #N/A if the incorrect parameter is entered [either the wrong type or more than a single entry in array brackets "{}"])
PLSA (stands for "parameter limit, single allowed")
(Returns the parameter if it is a single entry matching one of the supplied "allowed_entries" and #N/A otherwise)
JAB (returns a number greater than or equal to 1 (i.e. TRUE) if the reference has the specified data type(s) and 0 (i.e. FALSE) otherwise)
JAC (module for 1D (FILTER-based) "exclude_types/include_types/replace_with" with auto-shrink)
JAI (module for "if_empty")
JAL (switch for "include_types/exclude_types")
JAN (Returns TRUE if the reference is an array (i.e. is not a single element or is not omitted) and FALSE otherwise [simplified form of ISARRAY])
JAO (Returns TRUE if the reference contains at least one error and FALSE otherwise [simplified form of ISERRORS])
JAP (Returns TRUE if the reference contains at least one blank and FALSE otherwise [simplified form of ISBLANKS])
JBA (inserts single values into array brackets "{}")
AllTypes
IO (shortened form of ISOMITTED)
NIO [shortened form of NOT(ISOMITTED)]
PO0 (Returns 0 if the parameter is omitted and the parameter itself otherwise)
T1F0 (Returns 1 if the reference is TRUE, 0 if the reference is FALSE, and #N/A otherwise)
I got the idea for INSPECT while developing NTIMES, which uses the same exact core function, i.e. JAS (see below) to generate the list of unique values in the reference together with their counts and types. INSPECT allows for easily assessing the data, at a quick glance, to see what is contained within the reference and what the characteristics are. I wanted a solution that would be more detailed and useful than what is provided within the Excel status bar when some range is selected, but also I wanted this to be available for arrays as well.
The function output consists of three parts (see attached XL2BB examples): a) the upper left part contains a count of all five general data types (i.e. numbers, texts, blanks, logicals, and errors) and their total count after a blank column; b) the upper right part which appears only if the "type_specifics" parameter is used and provides additional details for the specified data type; and c) the lower three rows which appear after a blank row and display all the unique values in the reference, their counts, and their types.
(The code is modular (as all my other functions) allowing for easy swapping/optimizing over time. See all the modules below, after the description)
INSPECT takes five parameters, one required and four optional, as follows:
A) The first parameter, required, specifies the function input and can be a cell, range, or array
B) The second parameter, optional, provides sorting options for the lower "unique summary" portion of the output and takes one of seven arguments:
0 or omitted, for unsorted summary which displays the values in the order they occur in the reference
1, for sorting by count of values, in descending order
2, for sorting by count of values, in ascending order
3, for sorting by data type numbers (e.g. 1 for numbers and 2 for texts...) of values, in descending order
4, for sorting by data type numbers (e.g. 1 for numbers and 2 for texts...) of values, in ascending order
5, for sorting by the values, in descending order
6, for sorting by the values, in ascending order
Note that for arguments 3 and 4, the entire detailed XTYPE-based data types, which are shown at the last row of the output, are used for sorting; thus, argument 3 would emphasize the errors and logicals at the beginning of the output while argument 4 would emphasize numbers and texts (see the full list of types at section C below and the attached XL2BB)
C) The third argument, optional, specifies the data type for which additional details are needed and takes one of twenty-six arguments:
1, for number
2, for text
3, for blank
4, for logical
16, for error
31, for real blank
32, for formula blank
33, for space blank
34, for pasted blank
41, for TRUE
42, for FALSE
161, for #NULL! error
162, for #DIV/0! error
163, for #VALUE! error
164, for #REF! error
165, for #NAME? error
166, for #NUM! error
167, for #N/A error
168, for #GETTING_DATA error
169, for #SPILL! error
1610, for #CONNECT! error
1611, for #BLOCKED! error
1612, for #UNKNOWN! error
1613, for #FIELD! error
1614, for #CALC! error
1619, for #PYTHON! error
Note that only one type can be included in this parameter. Including more than one number (through array brackets) or any other data type will cause the function to crash to an #N/A
Note that if the reference does not contain the selected data type, or if the selected type is excluded by using the next two parameters (see sections D and E below), no details would be shown
D) The fourth parameter, optional, specifies the type(s) of data that can be excluded from the analysis and summary output and takes one or more of twenty-six arguments, specified in the third parameter in section C above
Note that if you need to enter more than one argument, you need to use the array brackets "{}" such as {1,3} for excluding numbers and blanks or {2,4,16} for excluding texts, logicals, and errors; see the attached XL2BB examples (the number of types permutations is huge; I have only shown a few examples); this parameter as well as the next (include_types) allow for a remarkable level of flexibility and full resolution for managing data types in the function output
Note that excluding type(s) may cause the output spill to auto-shrink, if the output contains the specified type(s)
Note that excluding type(s) that are not available in the reference will have no effect on the output
Note that if the reference contains only certain data types and all of these are excluded, or if all data types are excluded, e.g. by {1,2,3,4,16}, this will result in blank rows at the bottom section of the output and all the count numbers and the total at the upper left section will be zero
E) The fifth parameter, optional, specifies the type(s) of data that can be included in the analysis and summary output and takes one or more of twenty-six arguments, exactly like the fourth parameter in section D above
Note that both exclude_types and include_types cannot be used simultaneously
Note that using include_types (unless all types are included as by {1,2,3,4,16} for example) may also cause the main output spill to auto-shrink
Note that including type(s) that are not available in the output will result in blank rows at the bottom section of the output and all the count numbers and the total will be zero
(You can download my template from the link in my signature below, which makes it easier to obtain/test the functions compared to manually pasting from the text/XL2BB)
INSPECT
Excel Formula:
=LAMBDA(reference,[sort],[type_specifics],[exclude_types],[include_types],
LET(
r,IF(LEN(TRIM(reference))>0,reference,""),
s,PLS(PO0(sort)),
t,IF(IO(type_specifics),0,PLSA(type_specifics,AllTypes)),
e,exclude_types,
b,include_types,
j,JAL(e,b,),
d,JAS(r,XTYPE(reference,3),1),
a,SWITCH(j,
0,d,
JAC(e,b,,d,INDEX(d,3))
),
c,IF(
s,
SORT(
a,
SWITCH(s,1,2,2,2,3,3,4,3,5,1,6,1),
SWITCH(s,1,-1,2,1,3,-1,4,1,5,-1,6,1),
1
),
a
),
k,JBE(a,t),
f,CHOOSECOLS(k,
SEQUENCE(
,
LOOKUP(
2,
1/(INDEX(k,2,SEQUENCE(1,COLUMNS(k)))<>""),
SEQUENCE(1,COLUMNS(k))
)
)
),
h,IFERROR(COLUMNS(c),0),i,COLUMNS(f),
g,IF(SEQUENCE(2,h-i),""),
q,VSTACK(
IF(h>i,HSTACK(f,g),f),
LET(
p,IF(
h,
VSTACK(IF(SEQUENCE(1,h),""),c),
{"";"";"";""}
),
IF(
h>=i,
p,
HSTACK(p,IF(SEQUENCE(4,i-IF(h,h,h+1)),""))
)
)
),
IF(
JAN(a),
q,
IF(ERROR.TYPE(a)=14,q,NA())
)
)
)
JAS (Returns a three-row summary of unique values in the reference, their counts, and their types) (also used as core for NTIMES)
Excel Formula:
=LAMBDA(reference,types,blanks,
LET(
r,JBA(reference),
c,SEQUENCE(,ROWS(r)*COLUMNS(r)),
i,TOROW(r),
z,TOROW(types),
t,{31,32,33,34},
k,JAI(UNIQUE(FILTER(i,ISERROR(MATCH(z,t,0))),1),0),
p,IFERROR(MATCH(k,i,0),0)+IFERROR(MATCH(ERROR.TYPE(k),ERROR.TYPE(i),0),0),
a,IF(
blanks,
HSTACK(
IFERROR(UNIQUE(FILTER(i,NOT(ISERROR(MATCH(z,{31},0)))),1),0),
IFERROR(UNIQUE(FILTER(i,NOT(ISERROR(MATCH(z,{32},0)))),1),0),
IFERROR(UNIQUE(FILTER(i,NOT(ISERROR(MATCH(z,{33},0)))),1),0),
IFERROR(UNIQUE(FILTER(i,NOT(ISERROR(MATCH(z,{34},0)))),1),0)
),
IFERROR(UNIQUE(FILTER(i,NOT(ISERROR(MATCH(z,t,0)))),1),0)
),
y,HSTACK(k,a),
u,HSTACK(
p,
LET(
x,IFERROR(MATCH(t,z,0),0),
IF(
blanks,
x,
IFERROR(MIN(FILTER(x,x>0)),0)
)
)
),
q,MATCH(u,c,0),
w,LET(
x,INDEX(z,1,q),
IF(
blanks,
x,
IF(ISERROR(MATCH(x,t,0)),x,3)
)
),
b,CHOOSEROWS(
SORT(
CHOOSECOLS(
VSTACK(y,u,w),
FILTER(SEQUENCE(,COLUMNS(u)),u>0)
),
2,
1,
1
),
{1,3}
),
d,INDEX(b,1),
g,INDEX(b,2),
e,TOROW(IF(
ISERROR(r),
MATCH(ERROR.TYPE(r),ERROR.TYPE(d),0),
IF(
blanks,
IF(LEN(r)=0,MATCH(types,g,0),MATCH(r,d,0)),
MATCH(r,d,0)
)
)),
f,SEQUENCE(MAX(e)),
h,CHOOSEROWS(FREQUENCY(e,f),f),
VSTACK(d,TRANSPOSE(h),g)
)
)
JBC (Repeats the reference values by the number of times specified)
Excel Formula:
=LAMBDA(values,counts,
FILTERXML(
"<t><s>"&SUBSTITUTE(TEXTJOIN(",",1,REPT(values&",",counts)),",","</s><s>")&"</s></t>",
"//s[not(.='')]"
)
)
JBD (calculates "percent of total" for the specified data type and rounds the result to two digits)
Excel Formula:
=LAMBDA(total,[count],[type],[types],[counts],
ROUND(
IFERROR(
IF(
IO(type),
count,
INDEX(counts,1,MATCH(type,types,0))
)/total,
0
),
2
)
)
JBE (returns data analytics summary for the specified data type)
Excel Formula:
=LAMBDA(reference,type,
LET(
a,reference,
t,type,
d,INDEX(a,1),
e,INDEX(a,2),
b,INDEX(a,3),
da,LEN(TRIM(IFERROR(d,0))),
db,FILTER(e,ISNUMBER(d)),
eb,FILTER(d,ISNUMBER(d)),
dc,FILTER(e,(da>0)*ISTEXT(d)),
ec,FILTER(d,(da>0)*ISTEXT(d)),
dd,FILTER(e,da=0),
de,FILTER(e,ISLOGICAL(d)),
df,FILTER(e,ISERROR(d)),
j,VSTACK(
{"numbers","texts","blanks","logicals","errors","","total"},
LET(
k,HSTACK(
SUM(IFERROR(db,0)),
SUM(IFERROR(dc,0)),
SUM(IFERROR(dd,0)),
SUM(IFERROR(de,0)),
SUM(IFERROR(df,0))
),
HSTACK(k,"",SUM(k))
)
),
l,INDEX(j,2),
w,INDEX(l,,7)/100,
k,IF(
OR(t={0,1,2,3,4,16}),
SWITCH(t,
0,{"";""},
1,LET(
x,INDEX(j,2,1),
y,JBC(eb,db),
z,FILTER(y,ISNUMBER(y)),
IF(
x,
VSTACK(
HSTACK("%","min","mean","geomean","mode","median","max"),
HSTACK(
JBD(w,x),
MIN(eb),
ROUND(SUMPRODUCT(db,eb)/SUM(db),2),
IFERROR(ROUND(GEOMEAN(z),2),""),
IFERROR(MODE.SNGL(z),""),
MEDIAN(z),
MAX(eb))
),
{"";""}
)
),
2,LET(
x,INDEX(j,2,2),
y,JBC(ec,dc),
z,FILTER(y,ISTEXT(y)),
v,LEN(z),
IF(
x,
VSTACK(
HSTACK("%","min l.","mean l.","mode l.","median l.","max l."),
HSTACK(
JBD(w,x),
MIN(v),
ROUND(AVERAGE(v),2),
IFERROR(MODE.SNGL(v),""),
MEDIAN(v),
MAX(v)
)
),
{"";""}
)
),
3,LET(
x,INDEX(j,2,3),
IF(
x,
VSTACK(
{"%","% 31","% 32","% 33","% 34"},
HSTACK(
JBD(w,x),
JBD(w,,31,b,e),
JBD(w,,32,b,e),
JBD(w,,33,b,e),
JBD(w,,34,b,e)
)
),
{"";""}
)
),
4,LET(
x,INDEX(j,2,4),
IF(
x,VSTACK({"%","% 41","% 42"},
HSTACK(
JBD(w,x),
JBD(w,,41,b,e),
JBD(w,,42,b,e))
),
{"";""}
)
),
16,LET(
x,INDEX(j,2,5),
IF(
x,
VSTACK(
{"%","% 161","% 162","% 163","% 164","% 165","% 166","% 167","% 168","% 169","% 1610","% 1611","% 1612","% 1613","% 1614","% 1619"},
HSTACK(
JBD(w,x),
JBD(w,,161,b,e),
JBD(w,,162,b,e),
JBD(w,,163,b,e),
JBD(w,,164,b,e),
JBD(w,,165,b,e),
JBD(w,,166,b,e),
JBD(w,,167,b,e),
JBD(w,,168,b,e),
JBD(w,,169,b,e),
JBD(w,,1610,b,e),
JBD(w,,1611,b,e),
JBD(w,,1612,b,e),
JBD(w,,1613,b,e),
JBD(w,,1614,b,e),
JBD(w,,1619,b,e)
)
),
{"";""}
)
)
),
VSTACK(
LET(
x,TEXT(t,0),
HSTACK(x,CONCAT("% ",x))
),
LET(
x,INDEX(e,1,MATCH(t,INDEX(a,3),0)),
HSTACK(IFERROR(x,0),JBD(w,x))
)
)
),
HSTACK(j,{"";""},k)
)
)
XERROR.TYPE (posted separately)
XTYPE (posted separately)
PLS (stands for "parameter limit, single")
(Returns the parameter if it is a single entry (not blank or error) and #N/A otherwise)
(Causes the function to crash to a single #N/A if the incorrect parameter is entered [either the wrong type or more than a single entry in array brackets "{}"])
Excel Formula:
=LAMBDA(parameter,
INDEX(
IF(
OR(JAN(parameter),JAO(parameter),JAP(parameter)),
NA(),
parameter
),
1
)
)
PLSA (stands for "parameter limit, single allowed")
(Returns the parameter if it is a single entry matching one of the supplied "allowed_entries" and #N/A otherwise)
Excel Formula:
=LAMBDA(parameter,allowed_entries,
INDEX(
IF(
OR(JAN(parameter),JAO(parameter),JAP(parameter)),
NA(),
IFERROR(
IF(MATCH(parameter,allowed_entries,0),parameter),
NA()
)
),
1
)
)
JAB (returns a number greater than or equal to 1 (i.e. TRUE) if the reference has the specified data type(s) and 0 (i.e. FALSE) otherwise)
Excel Formula:
=LAMBDA(types,advanced_types_array,
IF(
SUM(T1F0(ISERROR(MATCH(types,AllTypes,0)))),
NA(),
LET(
basic_types_array,SWITCH(advanced_types_array,1,1,2,2,31,3,32,3,33,3,34,3,41,4,42,4,"","",16),
MAP(
advanced_types_array,
LAMBDA(a,OR(a=types))
)+
MAP(
basic_types_array,
LAMBDA(a,OR(a=types))
)
)
)
)
JAC (module for 1D (FILTER-based) "exclude_types/include_types/replace_with" with auto-shrink)
Excel Formula:
=LAMBDA(exclude_types,include_types,replace_with,main_array,advanced_types_array,
LET(
d,IF(IO(include_types),exclude_types,include_types),
x,JAB(d,advanced_types_array),
IF(
IO(replace_with),
FILTER(
main_array,
IF(IO(include_types),NOT(x),x)
),
IF(
IO(include_types),
IF(x,replace_with,main_array),
IF(x,main_array,replace_with)
)
)
)
)
JAI (module for "if_empty")
Excel Formula:
=LAMBDA(operation,if_empty,
IF(
JAN(if_empty),
NA(),
LET(
e,IF(
ISERROR(operation),
IF(ERROR.TYPE(operation)=14,1,0),
0
),
f,IF(
ISERROR(ROWS(operation)*COLUMNS(operation)),
1,
0
),
IF(
e+f=2,
IF(IO(if_empty),operation,if_empty),
operation
)
)
)
)
JAL (switch for "include_types/exclude_types")
Excel Formula:
=LAMBDA(exclude_types,include_types,replace_with,
IF(
JAN(replace_with),
NA(),
IFS(
AND(IO(exclude_types),IO(include_types),IO(replace_with)),0,
OR(AND(IO(include_types),NIO(exclude_types)),AND(NIO(include_types),IO(exclude_types))),1
)
)
)
JAN (Returns TRUE if the reference is an array (i.e. is not a single element or is not omitted) and FALSE otherwise [simplified form of ISARRAY])
Excel Formula:
=LAMBDA([reference],
LET(
r,IFERROR(IF(reference="","",reference),""),
IF(
IO(reference),
FALSE,
IF(ROWS(r)*COLUMNS(r)>1,TRUE,FALSE)
)
)
)
JAO (Returns TRUE if the reference contains at least one error and FALSE otherwise [simplified form of ISERRORS])
Excel Formula:
=LAMBDA(reference,
IF(
IO(reference),
FALSE,
IF(SUM(IF(ISERROR(reference),1,0)),TRUE,FALSE)
)
)
JAP (Returns TRUE if the reference contains at least one blank and FALSE otherwise [simplified form of ISBLANKS])
Excel Formula:
=LAMBDA(reference,
IF(
IO(reference),
NA(),
IF(SUM(IF(IFERROR(reference,0)="",1,0)),TRUE,FALSE)
)
)
JBA (inserts single values into array brackets "{}")
Excel Formula:
=LAMBDA(reference[if_omitted],
IF(
IO(reference),
if_omitted,
LET(
r,reference,
IF(
AND(COLUMNS(IFERROR(r,""))=1,ISERROR(r)),
CHOOSECOLS(CHOOSE({1,2},r,r),1),
FILTER(r,SEQUENCE(,COLUMNS(r)))
)
)
)
)
AllTypes
Excel Formula:
={1,2,3,4,16,31,32,33,34,41,42,161,162,163,164,165,166,167,168,169,1610,1611,1612,1613,1614,1619}
IO (shortened form of ISOMITTED)
Excel Formula:
=LAMBDA(parameter,
ISOMITTED(parameter)
)
NIO [shortened form of NOT(ISOMITTED)]
Excel Formula:
=LAMBDA(parameter,
NOT(ISOMITTED(parameter))
)
PO0 (Returns 0 if the parameter is omitted and the parameter itself otherwise)
Excel Formula:
=LAMBDA([parameter],
IF(IO(parameter),0,parameter)
)
T1F0 (Returns 1 if the reference is TRUE, 0 if the reference is FALSE, and #N/A otherwise)
Excel Formula:
=LAMBDA(expression,
IF(
ISNUMBER(expression)+ISLOGICAL(expression),
IF(expression,1,0),
NA()
)
)
INSPECT.xlsx | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | AG | AH | AI | |||
1 | |||||||||||||||||||||||||||||||||||||
2 | #CALC! | basic types | advanced types | advanced types, cont. | |||||||||||||||||||||||||||||||||
3 | types | 1 | dt:NUMBER | 1 | dt:NUMBER | 165 | dt:ERROR_NAME? | ||||||||||||||||||||||||||||||
4 | 89 | 43 | book | 89 | #DIV/0! | 14 | 1 | 1 | 2 | 1 | 162 | 1 | 2 | dt:TEXT | 2 | dt:TEXT | 166 | dt:ERROR_NUM! | |||||||||||||||||||
5 | 27 | #REF! | 47 | 89 | 1 | 164 | 1 | 34 | 1 | 33 | 3 | dt:BLANK | 31 | dt:BLANK_REAL | 167 | dt:ERROR_N/A | |||||||||||||||||||||
6 | 24 | 48 | 89 | note | 37 | 1 | 31 | 1 | 1 | 2 | 1 | 4 | dt:LOGICAL | 32 | dt:BLANK_FORMULA | 168 | dt:ERROR_GETTING_DATA | ||||||||||||||||||||
7 | 94 | FLASE | 24 | 48 | 19 | 32 | 1 | 2 | 1 | 1 | 1 | 16 | dt:ERROR | 33 | dt:BLANK_SPACE | 169 | dt:ERROR_SPILL! | ||||||||||||||||||||
8 | TRUE | bank | 1 | 41 | 31 | 2 | 1 | 31 | 31 | 34 | dt:BLANK_PASTED | 1610 | dt:ERROR_CONNECT! | ||||||||||||||||||||||||
9 | book | 37 | FALSE | #NAME? | task | 2 | 1 | 42 | 165 | 2 | 31 | 41 | dt:LOGICAL_TRUE | 1611 | dt:ERROR_BLOCKED! | ||||||||||||||||||||||
10 | 94 | 48 | 83 | 94 | a | 1 | 1 | 31 | 1 | 1 | 2 | 42 | dt:LOGICAL_FALSE | 1612 | dt:ERROR_UNKNOWN! | ||||||||||||||||||||||
11 | 89 | chair | 89 | 97 | TRUE | 27 | 1 | 2 | 1 | 1 | 41 | 1 | 161 | dt:ERROR_NULL! | 1613 | dt:ERROR_FIELD! | |||||||||||||||||||||
12 | 7 | #N/A | 47 | television | 48 | 14 | 1 | 167 | 1 | 2 | 1 | 1 | 162 | dt:ERROR_DIV/0! | 1614 | dt:ERROR_CALC! | |||||||||||||||||||||
13 | 47 | 14 | 89 | 954 | #DIV/0! | 1 | 1 | 34 | 1 | 1 | 162 | 163 | dt:ERROR_VALUE! | 1619 | dt:ERROR_PYTHON! | ||||||||||||||||||||||
14 | 164 | dt:ERROR_REF! | |||||||||||||||||||||||||||||||||||
15 | |||||||||||||||||||||||||||||||||||||
16 | sort: | omitted | |||||||||||||||||||||||||||||||||||
17 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
18 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
19 | |||||||||||||||||||||||||||||||||||||
20 | 89 | 43 | book | #DIV/0! | 14 | 27 | #REF! | 47 | 24 | 48 | note | 37 | 94 | FLASE | 19 | TRUE | bank | 1 | FALSE | #NAME? | task | 83 | a | chair | 97 | 7 | #N/A | television | 954 | ||||||||
21 | 7 | 1 | 2 | 2 | 3 | 2 | 1 | 3 | 2 | 1 | 2 | 6 | 4 | 1 | 2 | 1 | 3 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
22 | 1 | 1 | 2 | 162 | 1 | 1 | 164 | 1 | 34 | 33 | 1 | 31 | 1 | 2 | 1 | 32 | 1 | 2 | 1 | 41 | 2 | 1 | 42 | 165 | 2 | 1 | 2 | 2 | 1 | 1 | 167 | 2 | 1 | ||||
23 | sort: | 1 | |||||||||||||||||||||||||||||||||||
24 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
25 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
26 | |||||||||||||||||||||||||||||||||||||
27 | 89 | 48 | 14 | 47 | 94 | book | #DIV/0! | 27 | 24 | 37 | TRUE | 43 | #REF! | note | FLASE | 19 | bank | 1 | FALSE | #NAME? | task | 83 | a | chair | 97 | 7 | #N/A | television | 954 | ||||||||
28 | 7 | 6 | 4 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
29 | 1 | 31 | 1 | 1 | 1 | 1 | 2 | 162 | 1 | 34 | 1 | 1 | 41 | 1 | 164 | 33 | 2 | 32 | 2 | 1 | 2 | 1 | 42 | 165 | 2 | 1 | 2 | 2 | 1 | 1 | 167 | 2 | 1 | ||||
30 | sort: | 2 | |||||||||||||||||||||||||||||||||||
31 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
32 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
33 | |||||||||||||||||||||||||||||||||||||
34 | 43 | #REF! | note | FLASE | 19 | bank | 1 | FALSE | #NAME? | task | 83 | a | chair | 97 | 7 | #N/A | television | 954 | book | #DIV/0! | 27 | 24 | 37 | TRUE | 14 | 47 | 94 | 48 | 89 | ||||||||
35 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 4 | 6 | 7 | ||||
36 | 1 | 164 | 33 | 2 | 32 | 2 | 1 | 2 | 1 | 42 | 165 | 2 | 1 | 2 | 2 | 1 | 1 | 167 | 2 | 1 | 2 | 162 | 1 | 34 | 1 | 1 | 41 | 1 | 1 | 1 | 1 | 31 | 1 | ||||
37 | sort: | 3 | |||||||||||||||||||||||||||||||||||
38 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
39 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
40 | |||||||||||||||||||||||||||||||||||||
41 | #N/A | #NAME? | #REF! | #DIV/0! | FALSE | TRUE | book | note | FLASE | bank | task | a | chair | television | 89 | 43 | 14 | 27 | 47 | 24 | 48 | 37 | 94 | 19 | 1 | 83 | 97 | 7 | 954 | ||||||||
42 | 1 | 1 | 1 | 2 | 1 | 2 | 2 | 1 | 1 | 6 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 1 | 3 | 2 | 3 | 2 | 4 | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
43 | 167 | 165 | 164 | 162 | 42 | 41 | 34 | 33 | 32 | 31 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
44 | sort: | 4 | |||||||||||||||||||||||||||||||||||
45 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
46 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
47 | |||||||||||||||||||||||||||||||||||||
48 | 89 | 43 | 14 | 27 | 47 | 24 | 48 | 37 | 94 | 19 | 1 | 83 | 97 | 7 | 954 | book | note | FLASE | bank | task | a | chair | television | TRUE | FALSE | #DIV/0! | #REF! | #NAME? | #N/A | ||||||||
49 | 7 | 1 | 3 | 2 | 3 | 2 | 4 | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | 1 | 1 | 2 | 2 | 1 | 2 | 1 | 1 | 1 | ||||
50 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 31 | 32 | 33 | 34 | 41 | 42 | 162 | 164 | 165 | 167 | ||||
51 | sort: | 5 | |||||||||||||||||||||||||||||||||||
52 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
53 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
54 | |||||||||||||||||||||||||||||||||||||
55 | #DIV/0! | #REF! | #NAME? | #N/A | TRUE | FALSE | television | task | note | FLASE | chair | book | bank | a | 954 | 97 | 94 | 89 | 83 | 48 | 47 | 43 | 37 | 27 | 24 | 19 | 14 | 7 | 1 | ||||||||
56 | 2 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 | 2 | 1 | 6 | 1 | 1 | 1 | 3 | 7 | 1 | 4 | 3 | 1 | 2 | 2 | 2 | 1 | 3 | 1 | 1 | ||||
57 | 162 | 164 | 165 | 167 | 41 | 42 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 34 | 33 | 31 | 32 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
58 | sort: | 6 | |||||||||||||||||||||||||||||||||||
59 | numbers | texts | blanks | logicals | errors | total | |||||||||||||||||||||||||||||||
60 | 33 | 9 | 10 | 3 | 5 | 60 | |||||||||||||||||||||||||||||||
61 | |||||||||||||||||||||||||||||||||||||
62 | 1 | 7 | 14 | 19 | 24 | 27 | 37 | 43 | 47 | 48 | 83 | 89 | 94 | 97 | 954 | a | bank | book | chair | FLASE | note | task | television | FALSE | TRUE | #DIV/0! | #REF! | #NAME? | #N/A | ||||||||
63 | 1 | 1 | 3 | 1 | 2 | 2 | 2 | 1 | 3 | 4 | 1 | 7 | 3 | 1 | 1 | 2 | 1 | 6 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | ||||
64 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 34 | 33 | 31 | 32 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 42 | 41 | 162 | 164 | 165 | 167 | ||||
65 | |||||||||||||||||||||||||||||||||||||
INSPECT1 |
Cell Formulas | ||
---|---|---|
Range | Formula | |
B2 | B2 | =LAMBDA(reference,[sort],[type_specifics],[exclude_types],[include_types],LET(r,IF(LEN(TRIM(reference))>0,reference,""),s,PLS(PO0(sort)),t,IF(IO(type_specifics),0,PLSA(type_specifics,AllTypes)),e,exclude_types,b,include_types,j,JAL(e,b,),d,JAS(r,XTYPE(reference,3),1),a,SWITCH(j,0,d,JAC(e,b,,d,INDEX(d,3))),c,IF(s,SORT(a,SWITCH(s,1,2,2,2,3,3,4,3,5,1,6,1),SWITCH(s,1,-1,2,1,3,-1,4,1,5,-1,6,1),1),a),k,JBE(a,t),f,CHOOSECOLS(k,SEQUENCE(,LOOKUP(2,1/(INDEX(k,2,SEQUENCE(1,COLUMNS(k)))<>""),SEQUENCE(1,COLUMNS(k))))),h,IFERROR(COLUMNS(c),0),i,COLUMNS(f),g,IF(SEQUENCE(2,h-i),""),q,VSTACK(IF(h>i,HSTACK(f,g),f),LET(p,IF(h,VSTACK(IF(SEQUENCE(1,h),""),c),{"";"";"";""}),IF(h>=i,p,HSTACK(p,IF(SEQUENCE(4,i-IF(h,h,h+1)),""))))),IF(JAN(a),q,IF(ERROR.TYPE(a)=14,q,NA())))) |
F4 | F4 | =#DIV/0! |
I4:N13 | I4 | =XTYPE(B4:G13,3) |
B7 | B7 | =IF(1,"") |
E9 | E9 | =#NAME? |
C12 | C12 | =#N/A |
G13 | G13 | =1/0 |
B17:AH22 | B17 | =INSPECT(B4:G13) |
B24:AH29 | B24 | =INSPECT(B4:G13,1) |
B31:AH36 | B31 | =INSPECT(B4:G13,2) |
B38:AH43 | B38 | =INSPECT(B4:G13,3) |
B45:AH50 | B45 | =INSPECT(B4:G13,4) |
B52:AH57 | B52 | =INSPECT(B4:G13,5) |
B59:AH64 | B59 | =INSPECT(B4:G13,6) |
Dynamic array formulas. |
Upvote
0