APPENDCOLS =LAMBDA(xs, LAMBDA(ys, LET( nx, COLUMNS(xs), colIndexes, SEQUENCE(1, nx + COLUMNS(ys)), rowIndexes, SEQUENCE(MAX(ROWS(xs), ROWS(ys))), IFERROR( IF(nx < colIndexes, INDEX(ys, rowIndexes, colIndexes - nx), INDEX(xs, rowIndexes, colIndexes) ), NA() ) ) ) ) CHARSROW =LAMBDA(s, MID(s, SEQUENCE(1, LEN(s), 1, 1), 1 ) ) HEADCOL =LAMBDA(xs, LET(REM, "The first item of each column in xs", INDEX(xs, 1, SEQUENCE(1, COLUMNS(xs))) ) ) HEADROW =LAMBDA(xs, LET(REM, "The first item of each row in xs", INDEX( xs, SEQUENCE(ROWS(xs)), SEQUENCE(1, 1) ) ) ) LASTCOL =LAMBDA(xs, INDEX( xs, SEQUENCE(ROWS(xs), 1, 1, 1), COLUMNS(xs) ) ) SCANLCOLS =LAMBDA(op, LAMBDA(a, LAMBDA(xs, APPENDCOLS(a)( LET( b, op(a, HEADROW(xs)), IF(2 > COLUMNS(xs), b, SCANLCOLS(op)(b)( TAILROW(xs) ) ) ) ) ) ) ) TAILCOL =LAMBDA(cols, LET(REM, "The tail of each column in the grid.", INDEX( cols, SEQUENCE(ROWS(cols) - 1, 1, 2, 1), SEQUENCE(1, COLUMNS(cols)) ) ) ) TAILROW =LAMBDA(xs, LET(REM,"The tail of each row in the grid", n, COLUMNS(xs) - 1, IF(0 < n, INDEX( xs, SEQUENCE(ROWS(xs), 1, 1, 1), SEQUENCE(1, n, 2, 1) ), NA() ) ) )