Respostas criadas no fórum
-
AutorArtigos
-
jorgerod
Administradorjorgerod
Administradorpedro,
mas com a opção de 0, ainda assim te dá no filtro os valores iguais a zero? eu testei a macro que te enviei e todas as linhas que têm zero (0), não aparecem, só aparecem as de valor diferencial positivo e/ou negativo.
podes ver melhor? experimenta, na folha dif, tirar tudo o que lá tens e colocares o tal formulário de relatório, como se fosse o final e com a indexação à tabela que te dá os resultados. depois, se não te der nada, coloca aqui ouytra vez. É preferível do que estar muita coisa, porque deixa de se perceber o que se pretende.
fica bem.
jorgerod
Administradoro 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.
jorgerod
Administradorboas, pedro,
sem me querer meter muito nestas coisas, acho que apenas alguma ajuda é permitida, não efectuar a resolução, senão é pernicioso…
bom, para começar, pode tentar criar-se um filtro, partindo do princípio que a tua tabela está ok.
código para o filtro, a juntar a um botão de comando:
sub macroteste1()
‘
‘ macroteste1 macro
‘‘
rows(“37:90”).select
selection.delete shift:=xlup
range(“o33”).select
range(“h13:i33”).advancedfilter action:=xlfiltercopy, criteriarange:=range( _
“q12:q13”), copytorange:=range(“h37:i37”), unique:=false
end sublegenda:
range(“h13:i33”) – É a tua tabela
range(“q12:q13”) – é o range onde tens a condição, ou seja:
em q12 – correspondencia
em q13 – 0range(“h37:i37”) – local para onde vais copiar a tabela filtrada.
atenÇÃo!!! isto é apenas um exemplo, um começo, não pretende ser a solução, ok?
jorgerod
Administradorboas,
copias a coluna onde tens os resultados para outra coluna, mas através do colar especial e escolhes apenas valores. depois, clicas em ordenar. a seguir, clicas em continuar com a selecção actual. e acho que já fica pronto, uma vez que, por defeito, a ordenação é de cima para baixo, ou seja, do menor para o maior.
quanto ao resto. claro que podes colocar no forum. para mim é um prazer que lá coloques o meu nome e a direcção do site!!!! obrigadão!!! :cheer:
jorgerod
Administradorboas,
experimenta, em b1, o seguinte código:
=se(corresp(a1;a:a;0)=lin()-1;a1;0)
copia de b1 para baixo. se tudo correr bem, terás:
jorgerod
Administradorcomo 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():
jorgerod
Administradorsó 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 “-“.
jorgerod
Administradoralexandre,
parabéns! estive a experimentar e funciona lindamente! 🙂
obrigado por partilhares com os membros do exceler!!!!
jrod
jorgerod
Administradorboas, albino,
não sei se percebi bem, mas experimenta a seguinte fórmula, por exemplo em e2:
=somarproduto(–($a$2:$a$20″”);–($b$2:$b$20″”);–($c$2:$c$20=””))
ou seja, tens as condições de prenchimento nas duas colunas a e b e de não preenchimento na coluna c.
segundo o teu exemplo, vai dar-te o resultado 1. não é o que queres?
jorgerod
Administradorjorgerod
Administradorolá ana,
pelo que vi, sim, tens razão…
jorgerod
Administradorolá ana,
veja a minha planilha. com formatação de hora, dá certo. [file name=ana_01.xls size=46592]http://www.exceler.org/media/kunena/attachments/legacy/files/ana_01.xls[/file]
Ana_01.xlsAttachments:
You must be logged in to view attached files.jorgerod
Administradorolá ana,
veja o anexo e depois diga alguma coisa. [file name=ana.xls size=62976]http://www.exceler.org/media/kunena/attachments/legacy/files/ana.xls[/file]
Ana.xlsjorgerod
Administradorpafit,
talvez através da seguinte função personalizada:
function inserevirgula(text as string) as string
if len(text) < 10 then insertcomma = text
dim i as integer
dim t as string
t = left(text, 9)
for i = 10 to len(text) step 2
t = t & ";" & mid(text, i, 10)
next i
inserevirgula = t
end functioninseres a função num módulo. depois, supondo que tens o teu texto em a1, digitas, por exemplo em a5: inserevirgula(a1)
experimenta e depois diz qq coisa, ok?
nota: créditos para o excel mvp, juan pablo gonzalez 🙂
-
AutorArtigos
EXCELer Tudo sobre EXCEL em Português


