Eu consegui usando 10 colunas auxiliares levando em conta o maior e o menor resultado possível, talvez os experts podem reduzir minha lógica para ficar mais interessante
Vou explicar como consegui:
Levando em Conta que os dados estejam em A1:A4 temos os valores:
CN=José Junior,OU=Sem_policy,OU=Pre,OU=Vips_Usuarios,OU=Mesbla,DC=grupo,DC=mesbla
CN=bloqueado,OU=GP_Outros,DC=grupo,DC=mesbla
CN=Luiz Junior,OU=Gr,OU=Vips_Usuarios,OU=Mesbla,DC=grupo,DC=mesbla
CN=Benedito ,OU=Users_Desligados,DC=grupo,DC=mesbla
Na B1 usei a fórmula
=(NÚM.CARACT(A1)-NÚM.CARACT((SUBSTITUIR(A1;",";""))))
Explicação
Dessa forma identifico o máximo de quebras que os exemplos trazer me baseando na vírgula (,)
Na C1 usei a fórmula:
=SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(A1;"DC=";"%");"OU=";"%");"CN=";"%");",";"")&"%"
Explicação
Assim substituo os valores que o AD traz de DC,OU e CN por "%" eu tinha colocado asterisco (*) mas "cagou" a fórmula lá na frente
Na D1 usei a fórmula
=EXT.TEXTO(C1;(LOCALIZAR("%";C1)+1);(LOCALIZAR("%";C1;LOCALIZAR("%";C1)+1)-LOCALIZAR("%";C1)-1))
Explicação
Dessa forma identifico o primeiro bloco que ficou entre os carcteres especiais (%) e trago o valor na célula
Na E1:K1 usei a fórmula
=SEERRO(EXT.TEXTO(DIREITA(C1;NÚM.CARACT(C1)-NÚM.CARACT(D1)-1);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-NÚM.CARACT(D1)-1))+1);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-NÚM.CARACT(D1)-1);LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-NÚM.CARACT(D1)-1))+1)-LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-NÚM.CARACT(D1)-1))-1));"@")
Explicação
Eu sei que no mínimo haverá um bloco válido entre os carcteres especiais (%), a partir do segundo preciso ver se traz algum valor, caso contrário substituo por "@"
Para cada coluna que aumentar eu devo aumentar na fórmula o cálcula da quantidade de caracteres da célula anterior e decrementar 1, ou seja:
Na F1 fica:
=SEERRO(EXT.TEXTO(DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1))-2);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1))-2))+1);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1))-2);LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1))-2))+1)-LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1))-2))-1));"@")
Na G1 fica:
=SEERRO(EXT.TEXTO(DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1)+NÚM.CARACT(F1))-3);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1)+NÚM.CARACT(F1))-3))+1);(LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1)+NÚM.CARACT(F1))-3);LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1)+NÚM.CARACT(F1))-3))+1)-LOCALIZAR("%";DIREITA(C1;NÚM.CARACT(C1)-(NÚM.CARACT(D1)+NÚM.CARACT(E1)+NÚM.CARACT(F1))-3))-1));"@")
E assim por diante, por fim na L1 que monta o resultado que quero usei a fórmula
=SE(ESQUERDA(SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(K1&"@"&J1&"/"&I1&"/"&H1&"/"&G1&"/"&F1&"/"&E1&"/"&D1;"@";"");"//";"");"mesbla/grupo";"grupo.mesbla");1)="/";DIREITA(SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(K1&"@"&J1&"/"&I1&"/"&H1&"/"&G1&"/"&F1&"/"&E1&"/"&D1;"@";"");"//";"");"mesbla/grupo";"grupo.mesbla");NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(K1&"@"&J1&"/"&I1&"/"&H1&"/"&G1&"/"&F1&"/"&E1&"/"&D1;"@";"");"//";"");"mesbla/grupo";"grupo.mesbla"))-1);SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(K1&"@"&J1&"/"&I1&"/"&H1&"/"&G1&"/"&F1&"/"&E1&"/"&D1;"@";"");"//";"");"mesbla/grupo";"grupo.mesbla"))
Tive que avaliar alguns resultados que estavam começando por /
Bem foi isso que fiz parece que deu certo, se alguém quiser e puder ajudar para melhorar será bem vindo!
Vou deixar mais uns dias aberto depois fecho o tópico!
Vlw Galera!
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 14/10/2013 10:20 am