- Este tópico contém 9 respostas, 3 utilizadores e foi actualizado pela última vez há 13 anos, 7 meses por patropi.
-
AutorArtigos
-
-
13 de Abril de 2011 às 23:35 #927AnónimoInactivo
boa noite!!
gostaria de uma ajuda para uma função definida pelo usuário.
considere que a célula “b2” tenho os senguites textos:
b2: 6545ulk;65481; rfd123; gfh; 123422 .note que cada texto(independente de quantos digitos),cada texto está separado por vírgula.
na função depois de pronta vou digitar 1 para qual quer texto antes da 1º vírgula, 2 para para qual quer texto antes da 2º vírgula; 3 para qual quer texto antes da 3º vírgula….
…e assim sucessivamente.
alguém poderia me ajudar?obrigado!!!!!!!
-
16 de Abril de 2011 às 22:00 #1531AnónimoInactivo
pessoal, consegui resolver….
…segue o código…..
function parte_n(texto as string, n as integer) as string
dim vetorapplication.volatile
vetor = split(texto, “;”)
parte_n = vetor(n – 1)
end functionobrigado!!!!!!!
-
16 de Abril de 2011 às 22:39 #1532jorgerodAdministrador
alexandre,
parabéns! estive a experimentar e funciona lindamente! 🙂
obrigado por partilhares com os membros do exceler!!!!
jrod
-
16 de Abril de 2011 às 23:23 #1533jorgerodAdministrador
só para acrescentar mais qualquer coisa:
hans schraven escreveu em 2008 uma udf que faz um pouco mais, ou seja, se tivermos uma string com separador que não seja o “;”, e se utilizarmos essa função, podemos indicar qual o separador que queremos.
aqui vai a udf:
function nthword(tekst as string, n as integer, separator as string)
sq = split(tekst, iif(separator = “”, ” “, separator))
nthword = sq(ubound(sq))
if n > ubound(sq) + 1 then nthword = sq(n – 1)
end functionnuma célula, colocaremos então a função associada à célula que contém a string, o número do segmento pretendido e, por último, o separador que temos. por exemplo:
em a1: 6545ulk;65481; rfd123; gfh; 123422
=nthword(a1;4;”;”)o resultado seria: gfh
mas, para “complicar” um pouco mais, poderíamos ter outra situação, com dois tipos de separadores, por exemplo “;” e “-“. e pretenderíamos obter o segmento após o separador “-“.
ou seja, vejamos a seguinte string em a1:
asdfg01;0ie9slm-0uerdsj;oius99s0
neste caso, teríamos 2 segmentos. o primeiro, antes do separador “-” e outro, depois do separador “-“.
utilizando a função, escreveríamos:=nthword(a1;2;”-“)
teríamos então o resultado pretendido: 0uerdsj;oius99s0, ou seja, o segmento após o separador “-“.
-
17 de Abril de 2011 às 12:02 #1534AnónimoInactivo
:woohoo: nossa!!!…que incrível essa função…gostei vou usa-a com certeza!!
obrigado!!!!! por partilha seu incrível conhecimento com agente..obrigado!!!!
-
17 de Abril de 2011 às 20:13 #1535jorgerodAdministrador
como se pode ver, na udf é utilizada a função denominada split().
para se saber mais um pouco de tal função e as suas inúmeras aplicações, pode ver-se em:
há outras maneiras de fazer “cortes” em texto (split), usando apenas funções já existentes no excel. vários exemplos podem ser vistos em:
por último, gostaria de mostrar mais alguns exemplos, desta vez do mvp chip pearson:
já agora, passo a mostrar a utilização das funções ubound() e lbound() e ainda mais duas funções relacionadas com a função split(), que são: join()e filter():
-
21 de Abril de 2011 às 17:20 #1539patropiParticipante
boas
gostei dessa udf. vai ser muito útil.
estou com uma dúvida, eu segui as tuas instruções e para mim o resultado foi diferente:
na primeiro exemplo o meu deu como resultado 1234222 e pelo seu artigo a resposta seria gfh.
agora no segundo exemplo, com “tracinho” como separador, a resposta foi igual a tua.
o que será que ocorreu?um abraço
-
23 de Abril de 2011 às 0:59 #1542jorgerodAdministrador
o material tem sempre razão!!!!!
por lapso, colocou-se o sinal > (maior do que), quando o correcto é < (menor do que).
agora, aqui vai a udf, correcta:
function nthword(tekst as string, n as integer, separator as string)
sq = split(tekst, iif(separator = "", " ", separator))
nthword = sq(ubound(sq))
if n < ubound(sq) + 1 then nthword = sq(n – 1)
end functionexperimentei e agora já funciona correctamente!!!
obrigado pelo reparo.
-
23 de Abril de 2011 às 2:09 #1543patropiParticipante
perfeito
muito obrigado pelo retorno.
-
24 de Abril de 2011 às 21:08 #928AnónimoInactivo
pelo que estou vendo acabeide ficar rico!!!!!!!! :laugh:
obrigado!!!..por esse rico conhecimento…obrigado!!!!!!!
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.