About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2005-12-29
É com muito gosto que informo da existência de um Grupo de Discussão sobre Microsoft Office no Brasil, do qual sou, a partir de ontem, dia 28-12-2005, membro: Microsoft Users Group Rio Grande do Sul - Brasil

2005-12-26
Como é sabido, o caracter " / " (slash) é um caracter especial em formatos numéricos e que é usado em datas e fracções.
Mas de que modo podemos fazer com que o Excel trate tal caracter de um modo literal numa formatação, como por exemplo: 1234/56789?
O modo como o Excel "força" o caracter " / " (slash) a ser tratado literalmente, é precedendo-o com o caracter " \ " (backslash).
Claro que a introdução é efectuada como um número inteiro, ou seja, 123456789, para obter o resultado 1234/56789.
Vejamos o exemplo:

Utilizando a formatação personalizada,

Obteremos então:
Mas de que modo podemos fazer com que o Excel trate tal caracter de um modo literal numa formatação, como por exemplo: 1234/56789?
O modo como o Excel "força" o caracter " / " (slash) a ser tratado literalmente, é precedendo-o com o caracter " \ " (backslash).
Claro que a introdução é efectuada como um número inteiro, ou seja, 123456789, para obter o resultado 1234/56789.
Vejamos o exemplo:
Utilizando a formatação personalizada,
Obteremos então:
2005-12-11
Um dia destes, foi-me perguntado, por mail, como é que se consegue, numa coluna, obter uma sequência de datas coincidentes com o fim de cada mês, assim:
31-01-2005
28-02-2005
31-03-2005
etc .....
Tomemos o seguinte exemplo:
No Range A1:A12, introduzem-se os 12 meses do ano e em A13, insere-se o ano pretendido:

O Código, para uma possível solução, em C1:
=DAY(DATE($A$13;MONTH(DATEVALUE(A1&"-"&$A$13))+1;0))&"-"&MONTH(DATEVALUE(A1&"-"&$A$13))&"-"&$A$13
NOTA 1: Esta fórmula deve ser copiada até à célula C12, para indicar o último dia correspondente a cada mês.
NOTA 2: Alterando o ano em A13, por exemplo, para 2008, verificaremos que o último dia do mês de Fevereiro passará a ser 29, uma vez que 2008 é um ano bissexto.
31-01-2005
28-02-2005
31-03-2005
etc .....
Tomemos o seguinte exemplo:
No Range A1:A12, introduzem-se os 12 meses do ano e em A13, insere-se o ano pretendido:
O Código, para uma possível solução, em C1:
=DAY(DATE($A$13;MONTH(DATEVALUE(A1&"-"&$A$13))+1;0))&"-"&MONTH(DATEVALUE(A1&"-"&$A$13))&"-"&$A$13
NOTA 1: Esta fórmula deve ser copiada até à célula C12, para indicar o último dia correspondente a cada mês.
NOTA 2: Alterando o ano em A13, por exemplo, para 2008, verificaremos que o último dia do mês de Fevereiro passará a ser 29, uma vez que 2008 é um ano bissexto.
2005-12-07
Por norma, a ordenação ascendente ou descendente, é efectuada de cima para baixo (Top to Bottom):

mas também pode ser efectuada da esquerda para a direita (Left to Right):

No entanto, como fazer, de modo a efectuarmos múltiplos sorts Left to Right. como, por exemplo, no seguinte Range:

de maneira a, de uma só vez, ficar como segue?

Tom Ogilvy, mostrou, em 2001, num newsgroup de Excel, como se pode fazer este tipo de sort, através de VBE.
O Código, adaptado:
Private Sub CommandButton1_Click()
'baseado numa macro de Tom Ogilvy, 2001-03-24, em "Excel Programming"
Dim rw As Range
If Selection.Columns.Count = 1 Then
MsgBox "Seleccionar mais do que 1 célula ou mais do que 1 coluna"
Exit Sub
End If
For Each rw In Selection.Rows
rw.Sort key1:=rw, Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
Next
End Sub
mas também pode ser efectuada da esquerda para a direita (Left to Right):
No entanto, como fazer, de modo a efectuarmos múltiplos sorts Left to Right. como, por exemplo, no seguinte Range:
de maneira a, de uma só vez, ficar como segue?
Tom Ogilvy, mostrou, em 2001, num newsgroup de Excel, como se pode fazer este tipo de sort, através de VBE.
O Código, adaptado:
Private Sub CommandButton1_Click()
'baseado numa macro de Tom Ogilvy, 2001-03-24, em "Excel Programming"
Dim rw As Range
If Selection.Columns.Count = 1 Then
MsgBox "Seleccionar mais do que 1 célula ou mais do que 1 coluna"
Exit Sub
End If
For Each rw In Selection.Rows
rw.Sort key1:=rw, Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
Next
End Sub
2005-11-29
Se tivermos uma Tabela, da qual queiramos apurar quantas horas trabalhou um certo empregado num determinado dia, inserindo em duas células (E2 e E3) os dados correspondentes,como no exemplo:
podemos utilizar a Função SUM() associada ao asterisco (*), que aqui funciona como o operador AND.
NOTA: Como se trata de um Array, não esquecer de utilizar {}, através das teclas CTRL + Shift + Enter na fórmula activa.
A fórmula em E11:
{=SUM($C$1:$C$8*($A$1:$A$8=E2)*($B$1:$B$8=E3))}
2005-11-19
Ontem, um amigo meu veio ter comigo e disse-me que pretendia uma macro de modo a que pudesse seleccionar um Range variável.
Por exemplo, numa tabela A1:B10, poder, a partir de um número variável numa determinada célula, seleccionar desde A1 até à linha correspondente a esse número na coluna B:

ou seja, no exemplo, digitar o nº 3 na célula D1 e executar a macro, de modo a ser seleccionado o Range "A1:B3":

ou, de igual modo, digitar o nº 8 na célula D1 e executar a macro, de modo a ser seleccionado o Range "A1:B8":

Eis, então, um possível Código:
Por exemplo, numa tabela A1:B10, poder, a partir de um número variável numa determinada célula, seleccionar desde A1 até à linha correspondente a esse número na coluna B:
ou seja, no exemplo, digitar o nº 3 na célula D1 e executar a macro, de modo a ser seleccionado o Range "A1:B3":
ou, de igual modo, digitar o nº 8 na célula D1 e executar a macro, de modo a ser seleccionado o Range "A1:B8":
Eis, então, um possível Código:
Private Sub CommandButton1_Click()
Dim var
var = Range("D1").Value
Range("A1", "B" & var).Select
End Sub
2005-11-15
Há dias, num newsgroup de Excel, foi colocada a seguinte questão:
"Se tivermos a seguinte tabela no Excel dentro do intervalo A1:C4

e tendo definido [Inserir > Nome > Definir] os seguintes nomes:TMN=B3:C4; Econo=B3:B4; Norm=C3:C4; Mimo=B3:C3; Pako=B4:C4", como mostra o exemplo:

"Se colocarmos a seguinte formula na celula E10: =TMN Econo Pako, irá aparecer o valor da intersecção dos 3 nomes(ou seja 3 conjuntos) que é 25:"

Agora, a pergunta:
"Qual a fórmula que devo pôr nas células E10 e F10 para fazer a intersecção dos três nomes que eu colocar nas três linhas anteriores dessa coluna, ou seja, nos Ranges E7:E9 e F7:F9, de modo a dar os valores da intersecção - 25 e 35?"
Uma possível resposta:
Continuando a utilizar o caracter espaço (tecla de espaço) como o operador de intersecção, então, podemos socorrer-nos da Função INDIRECT() [em Português INDIRECTO()].
O Código:
Em E10:
=INDIRECT(E7) INDIRECT(E8) INDIRECT(E9)
Em F10:
=INDIRECT(F7) INDIRECT(F8) INDIRECT(F9)
"Se tivermos a seguinte tabela no Excel dentro do intervalo A1:C4
e tendo definido [Inserir > Nome > Definir] os seguintes nomes:TMN=B3:C4; Econo=B3:B4; Norm=C3:C4; Mimo=B3:C3; Pako=B4:C4", como mostra o exemplo:
"Se colocarmos a seguinte formula na celula E10: =TMN Econo Pako, irá aparecer o valor da intersecção dos 3 nomes(ou seja 3 conjuntos) que é 25:"
Agora, a pergunta:
"Qual a fórmula que devo pôr nas células E10 e F10 para fazer a intersecção dos três nomes que eu colocar nas três linhas anteriores dessa coluna, ou seja, nos Ranges E7:E9 e F7:F9, de modo a dar os valores da intersecção - 25 e 35?"
Uma possível resposta:
Continuando a utilizar o caracter espaço (tecla de espaço) como o operador de intersecção, então, podemos socorrer-nos da Função INDIRECT() [em Português INDIRECTO()].
O Código:
Em E10:
=INDIRECT(E7) INDIRECT(E8) INDIRECT(E9)
Em F10:
=INDIRECT(F7) INDIRECT(F8) INDIRECT(F9)
2005-10-27
Suponhamos que temos duas datas: 01-01-2005 e 23-01-2005. Se pretendermos saber quantas semanas estão contidas entre estas duas datas e quantos dias remanescem, verificamos que são 3 semanas (7x 3 = 21), restando 1 dia.
Numa abordagem um pouco simplista, mas demasiado elaborada (só para melhor compreensão), podemos criar várias fórmulas tendo em consideração o que atrás foi escrito. Então, teríamos:

em B2: =DATEDIF(A1;A2;"d")/7, ou seja, 3 semanas [ à Função DATEDIF() corresponde em português a Função DATADIF() ]
em B3: =DATEDIF(A1;A2;"d"), ou seja, a totalidade de dias - 22 dias
E o resultado seria:

em B6: =INT(B2)&","&INT(B3)-INT(B2)*7, ou seja: 3,1 (3 semanas e 1 dia)
Mas, se quisermos ser menos elaborados, mas com uma fórmula mais correcta, então podemos utilizar as Funções INT() [ em português é a mesma) e MOD() (RESTO() em português ]:

em B6: =INT((A2-A1)/7)&","&MOD(A2-A1;7)
Para finalizar, se quisermos ter uma apresentação mais cuidada, podemos escrever a fórmula do seguinte modo:

em B6: =IF(MOD(A2-A1;7)=0;INT((A2-A1)/7)&" semana(s)";INT((A2-A1)/7)& _
" semana(s) e "&MOD(A2-A1;7)&" dia(s)")
Numa abordagem um pouco simplista, mas demasiado elaborada (só para melhor compreensão), podemos criar várias fórmulas tendo em consideração o que atrás foi escrito. Então, teríamos:
em B2: =DATEDIF(A1;A2;"d")/7, ou seja, 3 semanas [ à Função DATEDIF() corresponde em português a Função DATADIF() ]
em B3: =DATEDIF(A1;A2;"d"), ou seja, a totalidade de dias - 22 dias
E o resultado seria:
em B6: =INT(B2)&","&INT(B3)-INT(B2)*7, ou seja: 3,1 (3 semanas e 1 dia)
Mas, se quisermos ser menos elaborados, mas com uma fórmula mais correcta, então podemos utilizar as Funções INT() [ em português é a mesma) e MOD() (RESTO() em português ]:
em B6: =INT((A2-A1)/7)&","&MOD(A2-A1;7)
Para finalizar, se quisermos ter uma apresentação mais cuidada, podemos escrever a fórmula do seguinte modo:
em B6: =IF(MOD(A2-A1;7)=0;INT((A2-A1)/7)&" semana(s)";INT((A2-A1)/7)& _
" semana(s) e "&MOD(A2-A1;7)&" dia(s)")
2005-10-21
No post anterior foi apresentado um modelo básico de calendário. Hoje, utilizando esse mesmo calendário, mostro como se pode incluir o número da semana correspondente, embora não seja totalmente correcto, porque não se está a tomar como início da semana o domingo, mas sim e sempre, os dias 1,8,15,22 e 29 do mês em referência:
A Fórmula em L10 (com Copy & Paste até L14):
=DAYS360($M$4;(M10&"-"&$O$6&"-"&$O$7))/7+1-5400
Nota: A célula M4 é uma célula vazia, apenas representando a data de início para a Função Days360(), ou seja, o valor 0 (zero):
2005-10-17
Um calendário básico:

Em O6 - o mês
Em O7 - o ano
Em M9:
=WEEKDAY($O$6&"-"&$O$7)
Em N9:
=M9+1
Em O9:
=N9+1
O mesmo até S9.
Para mostrar o dia corrente noutra cor, como no exemplo, marca-se a tabela com os 31 algarismos correspondentes aos dias do mês:

Escolhe-se Formatar Condicionalmente:

e, no terceiro campo da condição, coloca-se a fórmula:
=DAY(TODAY())
Agora, para que os dias do mês coincidam com o mês em causa, ou seja, meses com 30 dias, meses com 31 dias e Fevereiro com 29 ou 28 dias, conforme seja ano bissexto ou comum, teremos que construir a seguinte fórmula, no exemplo, em S6:
=DAY(DATE(O7;MONTH(DATEVALUE(O6&"-"&O7))+1;0))
Por último, na célula onde deve ficar o algarismo 29, ou seja, no exemplo, em M14, colocamos a seguinte fórmula:
=IF(S6=28;"";29)
Na célula correspondente a 30:
=IF(S6<30;"";30)
E na célula correspondente a 31:
=IF(S6=31;31;"")
Em O6 - o mês
Em O7 - o ano
Em M9:
=WEEKDAY($O$6&"-"&$O$7)
Em N9:
=M9+1
Em O9:
=N9+1
O mesmo até S9.
Para mostrar o dia corrente noutra cor, como no exemplo, marca-se a tabela com os 31 algarismos correspondentes aos dias do mês:
Escolhe-se Formatar Condicionalmente:
e, no terceiro campo da condição, coloca-se a fórmula:
=DAY(TODAY())
Agora, para que os dias do mês coincidam com o mês em causa, ou seja, meses com 30 dias, meses com 31 dias e Fevereiro com 29 ou 28 dias, conforme seja ano bissexto ou comum, teremos que construir a seguinte fórmula, no exemplo, em S6:
=DAY(DATE(O7;MONTH(DATEVALUE(O6&"-"&O7))+1;0))
Por último, na célula onde deve ficar o algarismo 29, ou seja, no exemplo, em M14, colocamos a seguinte fórmula:
=IF(S6=28;"";29)
Na célula correspondente a 30:
=IF(S6<30;"";30)
E na célula correspondente a 31:
=IF(S6=31;31;"")
Subscrever:
Mensagens (Atom)