Isso provavelmente seria mais fácil com o VBA, mas isso pode ser feito com fórmulas. Eu estou trabalhando no LibreOffice Calc, que tem um máximo de caracteres por fórmula, então eu precisava usar colunas auxiliares. Mas você pode consolidar isso em uma única fórmula, se quiser. Eu construí isso em torno de um máximo de seis dados, mas se você seguir o padrão nas colunas auxiliares, você pode expandi-lo para quantos você quiser.
AcélulaA1éondeestáoseunúmeroinicial.Normalmente,seriaum1
paracadadado.Comeceicom123456
parailustraralógica.AscolunasCaHsãoascolunasauxiliares,umaparacadaumdosseisdados.Essascélulascalculamopróximovalorparacadaumadelas.AcolunaAconcatenaosvaloresemumaúnicastring.Digiteasfórmulasparaalinha2e,emseguida,copiealinhaparapré-preencherquantosforemnecessários(ascélulasdesnecessáriasficarãoembrancoevocêpoderáocultarascolunasC:H,sedesejar).
AfórmulaemA2:
=IF(A1="","",C2&D2&E2&F2&G2&H2)
O teste para o branco é o que esconde as células desnecessárias. Se você quiser transformar tudo em uma única fórmula, substitua as fórmulas em C2: H2 pelas referências.
As fórmulas em C2: H2 são as seguintes:
C2: = IF(VALUE(LEFT(A1,1))=6,"", VALUE(LEFT(A1,1)) + OR(VALUE(MID(A1,2,1))=6))
D2: = IF(VALUE(MID(A1,2,1))=6,C2,VALUE(MID(A1,2,1))+IF(LEN(A1)>2,VALUE(MID(A1,3,1))=6,1))
E2: =IF(LEN(A1)<3,"",IF(VALUE(MID(A1,3,1))=6,D2,VALUE(MID(A1,3,1))+IF(LEN(A1)>3,VALUE(MID(A1,4,1))=6,1)))
F2: =IF(LEN(A1)<4,"",IF(VALUE(MID(A1,4,1))=6,E2,VALUE(MID(A1,4,1))+IF(LEN(A1)>4,VALUE(MID(A1,5,1))=6,1)))
G2: =IF(LEN(A1)<5,"",IF(VALUE(MID(A1,5,1))=6,F2,VALUE(MID(A1,5,1))+IF(LEN(A1)>5,VALUE(MID(A1,6,1))=6,1)))
H2: =IF(LEN(A1)<6,"",IF(VALUE(MID(A1,6,1))=6,G2,VALUE(MID(A1,6,1))+1))
Adicionei espaços para alinhar os padrões de fórmula para facilitar a visualização da lógica. você pode remover isso. Você tem no mínimo dois dados, portanto, as duas primeiras fórmulas não precisam testar se estão presentes. Quando o primeiro dado atingir 6
, todos os outros podem ser apenas 6
, por isso é a última linha. A função OR em C2 é porque o LO Calc não confirmou a avaliação da expressão booleana; o OR o força (e não faz mal a nada). O último dado potencial não precisa transmitir um valor de um próximo, então sua fórmula é um pouco mais curta.
Observe que as colunas D a H incluem uma referência à coluna anterior. Se você quiser consolidar isso em uma única fórmula, substitua a referência C2 em D2 pela fórmula C2. Em seguida, faça o mesmo para cada coluna sucessiva (a fórmula aumentará conforme você faz isso).
Aqui está a saída para dois dados: