Skip to content

TEXT_SPLIT_VECTOR sebagai recursive #21

@taruma

Description

@taruma
  • karena terdapat limitasi mengenai batasan karakter dalam sel, maka digunakan alternatif TEXT_SPLIT_VECTOR yang menggunakan metode recursive.
  • tidak ada perubahan dari penggunaannya.
// --- Workbook module ---
// A file of name definitions of the form:
//    name = definition;

// _RECURSIVE_TEXT_SPLIT --> _RECURSIVE_TEXT_SPLIT
_RECURSIVE_TEXT_SPLIT = LAMBDA(
    text_vector,
    ntry,
    col_delimeter,
    [row_delimiter],
    [ignore_empty],
    [match_mode],
    [pad_with],
    LET(
        text_vector, TOCOL(text_vector),
        selected_row, ARRAYTOTEXT(INDEX(text_vector, ntry)),
        IF(
            ntry = 1,
            TEXTSPLIT(
                selected_row,
                col_delimeter,
                row_delimiter,
                ignore_empty,
                match_mode,
                pad_with
            ),
            LET(
                next_try, ntry - 1,
                results, TEXTSPLIT(
                    selected_row,
                    col_delimeter,
                    row_delimiter,
                    ignore_empty,
                    match_mode,
                    pad_with
                ),
                VSTACK(
                    _RECURSIVE_TEXT_SPLIT(
                        text_vector,
                        next_try,
                        col_delimeter,
                        row_delimiter,
                        ignore_empty,
                        match_mode,
                        pad_with
                    ),
                    results
                )
            )
        )
    )
);

// _RECURSIVE_TEXT_SPLIT --> TEXT_SPLIT_VECTOR
TEXT_SPLIT_VECTOR = LAMBDA(
    text_vector,
    [col_delimeter],
    [row_delimeter],
    [ignore_empty],
    [match_mode],
    [pad_with],
    LET(
        nrows, ROWS(text_vector),
        col_delimeter, IF(ISOMITTED(col_delimeter), " ", col_delimeter),
        pad_with, IF(ISOMITTED(pad_with), "", pad_with),
        _RECURSIVE_TEXT_SPLIT(
            text_vector,
            nrows,
            col_delimeter,
            row_delimeter,
            ignore_empty,
            match_mode,
            pad_with
        )
    )
);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions