Zoho Sheet CHOOSEROWS: Select Rows and Calculate Sample Totals
Select rows in Zoho Sheet with relative indices, complete records, header-offset examples and correctly weighted sample rates.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
=CHOOSEROWS(A2:E9;2;4;6) selects the second, fourth and sixth rows of A2:E9. Those are worksheet rows 3, 5 and 7, because the array starts at row 2. Zoho Sheet returns every column of each selected row, keeping the fields together.
Availability and version history
- Introduced: Named in the fifteen-function launch linked from Zoho’s March 2023 release history. No numbered cloud release is given.
- Availability: Documented in Zoho Sheet’s current rolling web-service help; no final supported-version endpoint is established.
- Scope: Mobile, offline and imported-workbook parity remain separately unverified.
- Checked: October 14, 2026, against the official CHOOSEROWS entry. Coordinate and arithmetic examples were independently calculated; no native Zoho Sheet execution was performed.
Syntax and positional selection
CHOOSEROWS(array; row; [row1]; ...)
The array and one row index are required; additional row indices are optional. The official reference illustrates selectors 2,4,6 and 5,7. They refer to positions within the array, not worksheet row labels or the contents of an ID field.
CHOOSECOLS is the corresponding field-selection operation. Neither a successful row selection nor an attractive output layout establishes that a sample is representative.
Select complete rows from eight inspection runs
Create RunSamples, reserving A1:Y12. Enter the complete dataset in A1:E9. Run IDs are text; RPM, temperature, reject counts and inspected quantities are numbers. These are fictitious practice measurements.
| Row | A: Run | B: RPM | C: Temperature | D: Rejects | E: Units inspected |
|---|---|---|---|---|---|
| 2 | R1 | 1100 | 20 | 0 | 40 |
| 3 | R2 | 1200 | 22 | 1 | 50 |
| 4 | R3 | 1300 | 24 | 2 | 60 |
| 5 | R4 | 1400 | 26 | 3 | 75 |
| 6 | R5 | 1500 | 28 | 1 | 80 |
| 7 | R6 | 1600 | 30 | 2 | 125 |
| 8 | R7 | 1700 | 32 | 4 | 100 |
| 9 | R8 | 1800 | 34 | 1 | 90 |
Leave F2:J4, L2:P3 and R2:V3 empty. Enter =CHOOSEROWS(A2:E9;2;4;6) in F2. Expected F2:J4 is:
| Output row | F: Run | G: RPM | H: Temperature | I: Rejects | J: Units |
|---|---|---|---|---|---|
| 2 | R2 | 1200 | 22 | 1 | 50 |
| 3 | R4 | 1400 | 26 | 3 | 75 |
| 4 | R6 | 1600 | 30 | 2 | 125 |
Zoho’s dynamic-array instructions specify one formula in the anchor cell followed by Enter. Leave its complete output rectangle empty; do not fill the same formula across the intended result. An obstructing value produces the documented #SPILL! error. Edit the source or anchor rather than treating individual result cells as new inputs.
In L2 enter =CHOOSEROWS(A2:E9;5;7). L2:P3 contains R5,1500,28,1,80 and R7,1700,32,4,100. This is a separate sample, not additional rows appended to the first output.
In R2 enter =CHOOSEROWS(A4:E9;2;4). The source starts with R3, so its second and fourth rows are R4 and R6. R2:V3 contains R4,1400,26,3,75 and R6,1600,30,2,125. Inspect the starting row whenever the selected IDs look unexpected.
Calculate a rate from the selected complete records
In W2 enter =I2/J2 and fill through W4. The individual reject proportions are 0.02, 0.04 and 0.016, or 2%, 4% and 1.6%. Keep enough displayed precision to see the differences.
Put these separate summaries in Y2:Y9:
| Cell | Formula | Expected value |
|---|---|---|
| Y2 | =SUM(I2:I4) |
6 |
| Y3 | =SUM(J2:J4) |
250 |
| Y4 | =Y2/Y3 |
0.024 |
| Y5 | =AVERAGE(W2:W4) |
0.0253333333… |
| Y6 | =AVERAGE(H2:H4) |
26 |
| Y7 | =SUM(D2:D9) |
14 |
| Y8 | =SUM(E2:E9) |
620 |
| Y9 | =Y7/Y8 |
0.0225806452… |
The selected runs inspected different numbers of units. Dividing total rejects by total inspected units weights each run by its size; averaging the three row rates gives each run equal weight. AVERAGE and SUM answer different aggregation questions here. The full-data rate in Y9 is a third result and need not equal either selected-sample rate.
Copy RunSamples as ChangedRun. Change only D7 to 5 and E7 to 200. R6 remains in the selected sample, but I4/J4 become 5/200. W4 is 0.025; Y2:Y5 become 9, 325, 0.0276923077… and 0.0283333333…. Y6 stays 26. The full totals Y7/Y8 become 17/695, with Y9 0.0244604317…. The other original rows are unchanged.
Header inclusion changes every relative position
Copy the original RunSamples as HeaderSelection. Clear the copied outputs and summaries in F2:Y9 before entering the next formula; keep A1:E9 intact. In F2 enter:
=CHOOSEROWS(A1:E9;2;4;6)
The array now includes its header as row 1. The result therefore contains R1, R3 and R5, with their complete original records:
- R1,1100,20,0,40
- R3,1300,24,2,60
- R5,1500,28,1,80
The selectors did not change, but the source boundary did. Excluding the header is part of the calculation design, not an automatic feature of CHOOSEROWS.
Advanced: keep only the fields needed for a summary
Create CompactSample, reserving A1:M12, and enter the original A1:E9 data again. Leave G2:I4 empty and enter in G2:
=CHOOSECOLS(CHOOSEROWS(A2:E9;2;4;6);1;4;5)
The expected rows are R2,1,50 / R4,3,75 / R6,2,125: Run, Rejects and Units. J2 =H2/I2 filled through J4 reproduces the three individual rates. L2 =SUM(H2:H4) gives 6, L3 =SUM(I2:I4) gives 250, and L4 =L2/L3 gives 0.024.
This nested selection keeps each reject count paired with its own denominator and retains the run ID for traceability. It does not infer missing measurements, apply a condition such as temperature above a threshold, or select by ID after the input has been reordered.
Documented errors and unverified boundaries
The function-specific entry lists #VALUE! for index zero, a negative index or an index larger than the corresponding source dimension. In particular, do not import another program’s negative-index-from-the-end convention. The entry also lists invalid argument types, invalid references and #NUM! for an array that is too large, without quantifying that size limit.
These exercises use ascending, distinct, positive integer indices and explicit text/numeric cells. The short entry does not settle duplicate indices, reverse-order selectors, fractional indices, formula-empty strings, embedded errors or every import conversion. Keep those cases separate from the documented selection pattern. A valid index selects a position; it does not check the record’s meaning or whether the chosen sample represents the full dataset.