SLICES Function
Returns an array composed of one or more slices of columns and rows from a Range or Array or Spill reference. Values are returned from the intersections of the given rows and columns.
If the rows and columns define a single contiguous area then SLICES will return a reference, otherwise SLICES will return an array with the non-contiguous areas stacked together into a single array.
Slices can use alphabetic labels to lookup both rows and columns and will return all the results found that match both conditions.
SLICES is a multi-threaded, non-volatile array function.
SLICES Syntax
SLICES (Range_Array, [SliceRows], [ SliceColumns])
Range_Array
Array, Table, Range or Spill reference to take the slices from.
SliceRows (Optional, default 0)
Parameter giving the rows to return. A value of zero (default if SliceRows is omitted) means all the rows.
Rows can be derived from SliceRows in 3 different ways:
1.If Range_Array is a Range then SliceRows can be one or more ranges within Range_Array. Multiple disjoint ranges must be enclosed in ( ) – for example (A1:A2,A4) results in rows 1,2 and 4.
2.Alphabetic labels are used as lookup values in the first column of Range_Array to find the rows. These labels can be supplied in an array or a non-interseting range.
3.Relative row numbers are used directly. These row numbers can be supplied in an array or non-intersecting range.
For example {2,4} gets the second and fourth row of the Range_Array. Negative numbers work from the bottom upwards so {-1,-2} gets the last two rows of the Range_Array.
Zero acts as an include operator. {1,0,5} results in rows 1 through 5 inclusive
{2,0,-1} results in row 2 through to the second-to-last row. {1,5} results in row 1 and row 5 only {5,0} results in row 5 and all rows after row 5 {0,5} results in the first 5 rows
SliceColumns (Optional, default 0)
Parameter giving the columns to return. A value of zero (default if SliceColumns is omitted) means all the columns.
Columns can be derived from SliceColumns in 3 different ways:
1.If Range_Array is a Range then SliceColumns can be one or more ranges within Range_Array. Multiple disjoint ranges must be enclosed in ( ) – for example (A1:B1,D1) results in columns 1,2 and 4.
2.Alphabetic labels are used as lookup values in the first row of Range_Array to find the columns. These labels can be supplied in an array or a range.
3.Relative column numbers are used directly. These column numbers can be supplied in an array or range. For example {2,4} gets the second and fourth column of the Range_Array. Negative numbers work from right to left so {-1, -2} gets the last two columns of the Range_Array.
Zero acts as an include operator for columns in the same way as for rows.
SLICES Examples:
SLICES can use alphabetic labels as row and column lookups. In this example SLICES looks in the Monthly table to find all rows that have a row label of “Pear” and the columns that have a header label of “Month” and “Revenue” and then returns an array of all the data from the intersections of these rows and columns.
=SLICES(Monthly[#All],"Pear",{"Month","Revenue"})
You could also use these formulas to get the same results.
=SLICES(Monthly[#All],"Pear",(B4,E4)) – range reference to the column labels
=SLICES(Monthly[#All],"Pear",{2,5}) - array of column numbers
=SLICES(Monthly[#All],{3,7,11,15,19},{2,5}) - arrays of row and column numbers
=SLICES(Monthly[#All],"Pear",(B3:B6,E3:E7)) - using ranges that intersect the header labels
Given this range of data
SLICES(A1:C4,{2,3},{1,3}) will return this array
SLICES(A1:C4,0,{2,3}) will return this array
To calculate Yield (total revenue /total sales) from floating totals use -1 to access the last row of the dynamic array:
=SLICES(K9#,-1,6)/SLICES(K9#,-1,4)
|