O또는 X의 연속된 갯수 중에서 6이상의 갯수만 추출하려고 하는데 5이상은 오류가 없는데 6이상부터는 오류가 뜨더라구요 왜그럴까용?
=LET(
src, 일자별변환!A:P,
last, LOOKUP(2,1/ISNUMBER(INDEX(src,,1)),ROW(INDEX(src,,1))),
rng, TAKE(src,last),
AllRng, FILTER(rng, ISNUMBER(INDEX(rng,,1))),
DayRng, INDEX(AllRng,,1),
OX_rng, DROP(AllRng,,1),
GetSeries, LAMBDA(r,
LET(
Pa, FILTER(HSTACK(DayRng, r), r<>""),
a, INDEX(Pa,,2),
da, INDEX(Pa,,1),
p, VSTACK("", DROP(a,-1)),
idx0, FILTER(SEQUENCE(ROWS(a)), a<>p),
nxt0, VSTACK(DROP(idx0,1), ROWS(a)+1),
len, nxt0 - idx0,
idx, FILTER(idx0, len>=6),
flen, FILTER(len, len>=6),
flen & TEXT(CHOOSEROWS(da,idx), "(yyyy-mm-dd)")
)
),
res,
REDUCE("", SEQUENCE(,COLUMNS(OX_rng)),
LAMBDA(acc,i, HSTACK(acc, GetSeries(INDEX(OX_rng,,i))))
),
IFNA(DROP(res,,1),"")
)

안녕하세요~
위 수식에서
#CALC! 에러가 발생하는 이유는 FILTER 함수가 조건에 맞는 데이터를 하나도 찾지 못했을 때 기본적으로 에러를 반환하기 때문이고 또한, 각 열마다 결과값의 개수가 다르면 HSTACK이 배열 크기 불일치로 에러를 일으키게 됩니다.
일단 6개 이상 조건을 적용하고, 결과가 없을 경우 "없음"으로 표시해서,
열마다 결과 개수가 달라도 정상 작동하도록 했습니다.
[수정전]
GetSeries, LAMBDA(r, LET( Pa, FILTER(HSTACK(DayRng, r), r<>""), a, INDEX(Pa,,2), da, INDEX(Pa,,1), p, VSTACK("", DROP(a,-1)), idx0, FILTER(SEQUENCE(ROWS(a)), a<>p), nxt0, VSTACK(DROP(idx0,1), ROWS(a)+1), len, nxt0 - idx0, idx, FILTER(idx0, len>=5), flen, FILTER(len, len>=5), flen & TEXT(CHOOSEROWS(da,idx), "(yyyy-mm-dd)") ) ), res, REDUCE("", SEQUENCE(,COLUMNS(OX_rng)), LAMBDA(acc,i, HSTACK(acc, GetSeries(INDEX(OX_rng,,i)))) )[수정 후]
GetSeries, LAMBDA(r, LET( Pa, FILTER(HSTACK(DayRng, r), r<>"", ""), IF(INDEX(Pa, 1, 1) = "", "없음", LET( a, INDEX(Pa,,2), da, INDEX(Pa,,1), p, VSTACK("", DROP(a,-1)), idx0, FILTER(SEQUENCE(ROWS(a)), a<>p), nxt0, VSTACK(DROP(idx0,1), ROWS(a)+1), len, nxt0 - idx0, res_match, FILTER(HSTACK(len, idx0), len>=6, "없음"), IF(INDEX(res_match, 1, 1) = "없음", "없음", INDEX(res_match,,1) & TEXT(CHOOSEROWS(da, INDEX(res_match,,2)), "(yyyy-mm-dd)") ) ) ) ) ), res, REDUCE("", SEQUENCE(,COLUMNS(OX_rng)), LAMBDA(acc, i, LET( curr, GetSeries(INDEX(OX_rng,,i)), max_h, MAX(ROWS(acc), ROWS(curr)), HSTACK(EXPAND(acc, max_h,, ""), EXPAND(curr, max_h,, "")) ) ) )[수정내역]
이 부분을
FILTER(HSTACK(DayRng, r), r<>"", ""), IF(INDEX(Pa, 1, 1) = "", "없음", LET(이렇게 해서 에러를 방지하고,
이 부분도
열마다 결과 개수가 달라도 에러 발생하지 않도록 보강했습니다.
[전체]
=LET( src, 일자별변환!A:P, last, LOOKUP(2,1/ISNUMBER(INDEX(src,,1)),ROW(INDEX(src,,1))), rng, TAKE(src,last), AllRng, FILTER(rng, ISNUMBER(INDEX(rng,,1))), DayRng, INDEX(AllRng,,1), OX_rng, DROP(AllRng,,1), GetSeries, LAMBDA(r, LET( Pa, FILTER(HSTACK(DayRng, r), r<>"", ""), IF(INDEX(Pa, 1, 1) = "", "없음", LET( a, INDEX(Pa,,2), da, INDEX(Pa,,1), p, VSTACK("", DROP(a,-1)), idx0, FILTER(SEQUENCE(ROWS(a)), a<>p), nxt0, VSTACK(DROP(idx0,1), ROWS(a)+1), len, nxt0 - idx0, res_match, FILTER(HSTACK(len, idx0), len>=6, "없음"), IF(INDEX(res_match, 1, 1) = "없음", "없음", INDEX(res_match,,1) & TEXT(CHOOSEROWS(da, INDEX(res_match,,2)), "(yyyy-mm-dd)") ) ) ) ) ), res, REDUCE("", SEQUENCE(,COLUMNS(OX_rng)), LAMBDA(acc,i, LET( curr, GetSeries(INDEX(OX_rng,,i)), max_h, MAX(ROWS(acc), ROWS(curr)), HSTACK(EXPAND(acc, max_h,, ""), EXPAND(curr, max_h,, "")) ) ) ), IFNA(DROP(res,,1),"") )저도 참조하겠습니다 감사하빈다