Zoho Sheet VSTACK: Append Records and Preserve Column Meaning
Append arrays vertically in Zoho Sheet with complete datasets, header and duplicate examples, schema checks and corrected column layouts.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
=VSTACK(A2:C5;E2:G4) appends three rows below four rows, producing a seven-row result. Zoho Sheet VSTACK combines arrays vertically. It keeps their column positions and does not deduplicate records or align fields by their header names.
Availability and version history
- Introduced: Named in the seven-function launch linked from Zoho’s November 2022 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 VSTACK entry. Coordinate, type and arithmetic examples were independently calculated; no native Zoho Sheet execution was performed.
Syntax and matching field layouts
VSTACK(array1; [array2]; ...)
The first array is required and later arrays are optional. Each additional array is appended below the previous one. The official entry illustrates two equal-width ranges; the worked examples here use three columns in every input block.
HSTACK combines arrays horizontally. Both are positional operations, so inspect the meaning and order of the fields before joining datasets.
Append two complete record sets
Create AppendRecords, reserving A1:N12. Enter ID, Units and Unit price in A1:C1 and E1:G1. Put the first four records in A2:C5 and the second three in E2:G4:
| First-block row | A: ID | B: Units | C: Unit price |
|---|---|---|---|
| 2 | P1 | 3 | 8 |
| 3 | P2 | 5 | 7 |
| 4 | P3 | 4 | 11 |
| 5 | P4 | 6 | 9 |
| Second-block row | E: ID | F: Units | G: Unit price |
|---|---|---|---|
| 2 | P5 | 2 | 12 |
| 3 | P6 | 7 | 6 |
| 4 | P2 | 5 | 7 |
Leave I2:K8 empty and put ID, Units and Unit price in I1:K1. Enter =VSTACK(A2:C5;E2:G4) in I2.
| Output row | I | J | K |
|---|---|---|---|
| 2 | P1 | 3 | 8 |
| 3 | P2 | 5 | 7 |
| 4 | P3 | 4 | 11 |
| 5 | P4 | 6 | 9 |
| 6 | P5 | 2 | 12 |
| 7 | P6 | 7 | 6 |
| 8 | P2 | 5 | 7 |
Zoho’s dynamic-array instructions specify entering one formula in its anchor and pressing Enter. Leave the entire intended result rectangle empty. Do not fill duplicate formulas across it; an obstructing value produces #SPILL!. Edit source cells or the anchor rather than treating the returned cells as independent inputs.
Put Amount in L1, enter L2 =J2*K2 and fill through L8. Expected amounts are 24,35,44,54,24,42,35. N2 =SUM(J2:J8) is 32 units; N3 =SUM(L2:L8) is 258.
P2 appears twice because it occurs in both inputs. VSTACK preserves both rows; it does not decide whether this is a duplicate to remove or two legitimate transactions. The two P2 rows contribute ten units and amount 70 to these stated totals. Preserve record context before choosing a deduplication policy.
Source updates and one retained header
Copy AppendRecords as ChangedAppend. Change only F3, P6’s quantity, from 7 to 10. J7 becomes 10 and L7 becomes 60. N2 becomes 35, and N3 becomes 276. The original seven-record result remains available on its original sheet.
For a separate header-inclusive result, copy the original AppendRecords as HeaderStack. Clear I1:N12, including the copied manual output headings and formulas, while leaving A1:G5 intact. In I1 enter:
=VSTACK(A1:C5;E2:G4)
I1:K8 now contains one header row followed by the seven data records. Including E1:G1 as well would append a second header between the two data blocks. VSTACK does not recognize and remove repeated headings automatically. Choose the exact input boundaries rather than relying on the text of a header.
Advanced: a correct amount total can hide swapped columns
Copy the original AppendRecords as SwappedFields, extending the available area through U12. Change F1 to Unit price and G1 to Units. Replace E2:G4 with:
- P5,12,2
- P6,6,7
- P2,7,5
The first source block still uses ID,Units,Unit price. The second now uses ID,Unit price,Units. The original I2 VSTACK formula still combines the same positions, so its final three rows become P5,12,2 / P6,6,7 / P2,7,5.
N2, which sums result column J as if it always contained quantities, becomes 43. N3 remains 258 because swapping the two numeric factors does not change their product. A correct-looking amount total therefore cannot prove that the schema is aligned.
Leave O2:Q8 empty and enter this corrected-layout formula in O2:
=VSTACK(A2:C5;HSTACK(E2:E4;G2:G4;F2:F4))
The inner HSTACK explicitly rebuilds the second input as ID,Units,Unit price. O2:Q8 is then the same seven-row layout as the original, with the final records P5,2,12 / P6,7,6 / P2,5,7.
Enter R2 =P2*Q2 and fill through R8. T2 =SUM(P2:P8) returns 32, and U2 =SUM(R2:R8) returns 258. Both quantity and amount now refer to the intended fields. This correction depends on the known layout; it is not automatic matching by field name.
Unequal widths, blank values and errors
The VSTACK help lists #N/A! when one or more arrays has fewer columns than the maximum column count. It does not specify exactly where that error appears in the returned rectangle, so these examples do not assert a padding-cell pattern for unequal widths.
The entry also lists generic name, argument-type and reference errors. Empty cells, formula-empty text, embedded errors, very large arrays and imported client behavior remain separately unverified. Use the full intended empty spill area and distinguish a shape error from the same-width schema mismatch demonstrated above.
SUM totals the numbers it receives. It cannot infer that a repeated record should be excluded, a header should be skipped or a price column was labeled as units. Keep original blocks and their field definitions available while checking the appended result.