Blog Archive
About Me
Seguidores
Estatisticas
247: VBA – As Funções Date(), Time() e Format()
Há dias, num grupo de discussão, colocaram a seguinte questão (adaptada):
“ como posso fazer para criar uma tabela onde por cada entrada me indique a data e hora do momento, mas que de cada vez que execute a folha, as datas das entradas anteriores não sejam todas actualizadas?”
Vejamos o exemplo:
Podemos, então, construir o seguinte código, que colocaremos no Workbook, de modo a que, logo que o mesmo seja aberto, o execute, para criar uma entrada com data e hora de acesso:
Option Explicit
Private Sub Workbook_Open()
Dim strDate As String
strDate = Format(Date, "dd-mm-yyyy") & " / " & Format(Time, "hh:mm:ss")
Range("A1").Select
If Range("A2") = "" Then
Range("A2") = strDate
Else
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = strDate
End If
End Sub
Nota: Este código deverá estar no workbook module (Este Livro ou This Workbook)
Tópicos relacionados:
246: Excel – Somar sob determinados critérios
Num grupo de discussão do Excel, há já algum tempo, apresentaram a seguinte questão (adaptada):
“ Se eu digitar a seguinte fórmula numa célula = CONTAR.SE(E5:K5;”P”) e se existir algum “P” no range E5:K5, a célula é contada.
E se eu quiser contar nesse mesmo range as células que contenham “P”, “T” e “L”?
Vejamos o exemplo:
O resultado será 2.
Mas, se incorporarmos o “T” e o “L”, o resultado será 4.
Novamente o exemplo, com a fórmula adequada ao resultado pretendido. (mérito para o malogrado Frank Kabel - Permanent Link to Frank Kabel).
245: Excel – Localizar e Substituir
Num grupo de discussão do Excel, foi apresentada a seguinte questão (adaptada):
“ Preciso saber como alterar o conteúdo de um conjunto de células mas tenho a seguinte dificuldade:
Numa célula ou em várias tenho, por exemplo =soma(a5:a15), quero alterar o "5" para "6" passando a ter =soma(a6:a15) e o que obtenho é =soma(a6:a16), como posso apenas alterar o primeiro "5" sem mexer no segundo "5"?”
Para obstar tal situação, teremos que nos socorrer de algum expediente.
Assim, para obtermos o componente Range “A15”, sem que o mesmo possa ser alterado quando estamos a efectuar a substituição do algarismo “5”, podemos digitar o seguinte, por exemplo, na célula E200: ="A"&14+1, o que irá mostrar o conteúdo da célula como “A15”, apesar de não ter nenhum algarismo “5”:
Então, se pretendermos ter a soma(A5:A15) sem termos o segmento do range “A15”, mas sim, em sua substituição, o conteúdo de E200 (que será A15), digitaríamos, por exemplo em E5: =SOMA(A5:INDIRECTO(E200))
O resultado esperado seria 14.
Agora, se pretendermos utilizar o “Localizar e Substituir”:
Teríamos, então, o resultado esperado: 13
Ou seja, quando for para substituir "fórmulas" (em Opções>>), de 5 para 6, vai dar o resultado que se teria com a alteração da fórmula para =SOMA(A6:INDIRECTO(E200)), ou seja, o mesmo que SOMA(A6:A15).
Tópicos relacionados:
244: Excel – Formatação de células
Há dias, num grupo de discussão, apareceu a seguinte questão (adaptada):
“venho solicitar a vossa ajuda para o seguinte:
copiei uma tabela da Net e na coluna que tem 1-1 ou 1-2 o Excel assume como um de Janeiro e um de Fevereiro respectivamente. Quando tento formatar a célula para texto, para que fique na forma original, ele coloca um numero 32 mil e qualquer coisa...
Alguém pode ajudar?”
Vejamos o exemplo dado:
Se tentarmos formatar as células como texto, irá aparecer o seguinte:
Então, para ultrapassarmos a situação e para que consigamos ter, por exemplo, nas células B1, B2 e B3, respectivamente os dados pretendidos a partir do conteúdo das células A1, A2 e A3, ou seja, 1-1, 1-2 e 1-3, para que fique assim:
Devemos construir a seguinte fórmula em B1, copiando-a até B3:
=TEXTO(A1;"d-m")