web 2.0


Circulando valores duplicados no Excel 2007

Uma ferramenta de validação de dados no Excel extremamente útil e pouquíssima utilizada é a ferramenta de circular dados inválidos.

Esta ferramenta está disponível no Excel 97-2003, por exemplo, mas por ela estar enterrada na barra de ferramentas “auditoria de fórmulas” são poucas as pessoas que a conhecem e as pessoas que conhecem raramente usam porque acabam esquecendo que ela existe.

Com a nova interface(introduzida no Excel 2007), ela foi colocada juntamente com a validação e ficou fácil aplicá-la ao nosso trabalho. Neste exemplo, circularemos valores duplicados, porém esta ferramenta pode ser aplicada a qualquer valor inválido (como se fosse uma formatação condicional). Assim, assumindo que possuímos um conjunto de dados validados para valores únicos, mas no qual há valores repetidos, podemos circular os duplicados como segue:

• Com a área validada, ative a guia Dados e selecione a opção Circular Dados Inválidos:

validação de dados no excel 2007

Figura 1-1 Circulando dados inválidos

Feitos isso, todos os valores duplicados no intervalo que contém a validação de dados serão marcados conforme mostra a figura:

circular dados inválidos no Excel
Figura 1-2 Valores duplicados circulados

Tags: ,

Microsoft Office

Percentuais no Excel

Neste artigo discutirei uma questão fundamental da matemática financeira extremamente importante no uso do Excel Avançado, mas também importante na leitura das páginas financeiras.

Vejamos o seguinte cenário: a taxa básica de juros (Selic) está, digamos, em 10%. Após a reunião do Copom, a taxa passa para 9%. Qual o percentual de queda na taxa?


Muitos dirão que a taxa caiu 1%, mas na verdade ele caiu 10%.


O problema está na forma como nós descrevemos percentuais. Nós podemos falar de percentual, pontos percentuais ou ponto base.


No primeiro caso (queda percentual), nós temos o seguinte cenário:


=9%/10%-1

O resultado desta conta é -10%, indicando uma queda de 10% por cento na taxa de juros.


Por outro lado, muitos fariam a conta da seguinte forma:


=(9/10-1)*100


Ao multiplicarmos por 100, nós obtemos o que chamamos de pontos percentuais. Neste caso, a Selic caiu 10 pontos percentuais. Note que se você formatar este cálculo para percentual no Excel o resultado será -1000%, pois você está magnificando o resultado percentual em 100 vezes ao multiplicá-lo por 100. Em outras palavras, você efetivamente fez a conta 10%*100 que é igual a 1000%.


Finalmente, nós temos o que chamamos de pontos base. O ponto percentual é o resultado percentual em forma unitária, isto é, 0,1 que, na forma unitária, representa 10%, na forma centesimal (0,1*100 = 10 pontos percentuais ao passo que 10%*100=1000%). Neste caso
(pontos percentuais), a multiplicação é 100 e no caso do ponto base a multiplicação é por 10.000.

No caso do exemplo original, a Selic baixou 10% (de 10% para 9%); porém, ela baixou 1 ponto percentual ou 100 pontos bases. Obviamente que tudo é a mesma coisa, apenas as formas de expressão é que são distintas.


Sendo assim, da próxima vez que você escutar que algo baixou 1% assegure-se que realmente baixou 1% e não 10 pontos percentuais (10%).

 

Tags: ,

Curso MS Access Modelagem de Dados: Parte 2

Esta é a segunda parte da série de artigos que compõem o curso online grátis de modelagem de dados no Microsoft Access 2003. Não deixe de ler a primeira parte do curso para acompanhar melhor as questões debatidas sobre o Microsoft Access e outros aplicativos do Microsoft Office tais como Microsoft Excell e Microsoft Word. Nesta continuação você aprenderá sobre RDBMS.



Que tipo de banco de dados é o Access e o que significa RDBMS?

O Access é um banco de dados relacional. Se você nunca ouviu falar em banco de dados relacional esta é uma ótima oportunidade para compreender o que isso significa.


A sigla RDBMS refere-se ao termo em inglês Relational Database Management System (Sistema de Gerenciamento por Banco de Dados Relacional). E o que isso significa? Colocando o preto no branco, isso quer dizer que os dados contidos no banco de dados possuem algum tipo de relação, isto é, o seu tio está relacionado a você porque ou ele é irmão de sua mãe ou de seu pai. Se não fosse, ele não teria nenhuma relação direta com você.


Um banco de dados relacional funciona assim. A tabela contendo todas as cidades brasileiras e do mundo pode estar relacionada com uma tabela contendo todos os países do mundo. Porém, somente o país Brasil está diretamente relacionado a todas as cidades brasileiras na tabela de cidades do mundo. Desta forma, se você tivesse que consultar o banco de dados por país para criar uma lista de cidades, ao escolher Brasil, somente as cidades relacionadas ao Brasil seriam listadas.


Agora, volte ao exemplo do seu tio. Eu disse que se ele não for irmão de seu pai ou mãe; então, ele não está relacionado a você diretamente. Mas isso não quer dizer que esta pessoa não esteja relacionada a você de alguma outra forma.


Se o mundo animal surgiu de apenas uma célula que gerou toda a vida no planeta Terra; então, todos os animais estão relacionados de uma forma ou de outra. Assim, os animais próximos têm um relacionamento direto, como leões e leoas, ao passo homem e leão não possuem relacionamento direto, mas ambos são seres vivos que possuem características simulares como sangue, cérebro, coração, fígado, etc, gerando assim uma relação indireta.


Em um banco de dados relacional, o que você notará é exatamente isso. Às vezes, você possui várias tabelas onde duas estão diretamente relacionadas, mas na ponta de uma cadeia de relacionamento há uma tabela que não contém um campo comum com uma tabela na outra ponta do relacionamento; porém, ambas as tabelas possuem algum relacionamento, pois no meio do caminho existem outras tabelas relacionadas que eventualmente convergem para estas duas.
Obviamente que este é apenas um exemplo simples. O Access nos permite criar bancos de dados relacionais muito mais complexos do que isso..

Tags: , , , ,

Curso MS Access Modelagem de Dados: Parte 1

Nesta série de artigos, falarei sobre a modelagem de dados no Microsoft Access 2003. Não obstante, você poderá utilizar os conceitos aqui descritos em outras versões do aplicativo, sejam elas mais antigas ou mais recentes. Dentre todos os aplicativos do Microsoft Office, certamente o Microsoft Excel é o mais popular entre os usuários, mas provavelmente o mais utilizado seja realmente o Word.



Talvez pela extrema popularidade entre os usuários, muitos acabam utilizando o Excel como uma base de dados para os mais diferentes tipos de trabalho. O problema em utilizar o Excel é que sua função principal é a análise de dados e não o armazenamento dos mesmos.


Não por acaso a Microsoft chama o MS Office como uma “suíte” de produtividade. A produtividade não está em um aplicativo apenas, mas na integração dos aplicativos para fazer o seu trabalho melhor. Suponha que você colete dados sobre a umidade relativa do ar a cada minuto. Se você tentar gravar estes dados no Excel 2003 não há problema algum, pois você fará 1440 medições no dia e o número máximo de linhas em uma única planilha é de 65.536.


Contudo, você provavelmente estará registrando a umidade para outras cidades também e certamente o fará todos os dias se este for o seu trabalho. Aqui, você começa a enfrentar problemas no Excel, pois ficará mais difícil manter a integridade e relacionamento dos dados.


Você pode argumentar que cada planilha leva o nome da cidade e que, portanto, esta é uma forma de relacionar as medições com cada cidade. Como o Excel, teoricamente, não tem limite de planilhas, você poderia gravar a medição para todas as cidades brasileiras, e até do mundo, utilizando este método.


Contudo o resultado é completamente ineficiente por um simples motivo: o Excel não foi feito para armazenar dados, o Excel foi feito para analisar dado. Se você compreender que no Access o mesmo armazenamento apenas necessita de duas tabelas (uma que contém as cidades e outra que contém as medições) você verá que a sua produtividade aumentará em muito, basta apenas relacionar as duas tabelas. Quando o momento for oportuno e a necessidade de análise de dados surgir, você novamente verá que analisar dados no Access, embora possível, é ineficiente. Com as ferramentas do Office completamente entrelaçadas você verá que a análise se dará de forma mais bela no Excel. E se você necessita apresentar os resultados, entra em cena o PowerPoint e se há necessidade de escrever um relatório é a vez do Word.


Quanto mais você se aprofundar no Office e conhecer cada uma de suas ferramentas, mais produtivo você se tornará. E digo isso por experiência própria.

Até a segunda parte deste curso...

 

Tags: ,

Microsoft Office

Valor por extenso no Excel

Tempos atrás (e põe tempo nisso) me vi as voltar com o desafio de escrever uma função personalizada no Excel que escrevesse números por extenso até a casa dos trilhões de reais. Passados alguns anos, novamente fui solicitado pela mesma função e fui obrigado e desenterrar o meu Excel Addin.

O AddIn é auto-instalável bastando apenas clicar duas vezes sobre ele (baixe o arquivo em Extenso no Excel). Para criar um sistema de auto-instalação de AddIn, você deve proceder como segue:

Option Explicit
Dim ExtensoInstalado    As Boolean

Private Sub Workbook_AddinInstall()
   ExtensoInstalado = True
End Sub

Private Sub Workbook_Open()
    Dim naLista     As Boolean
    Dim nAddIn      As AddIn
    Dim nomeArq     As String

For Each nAddIn In AddIns
    If nAddIn.Name = ThisWorkbook.Name Then
        naLista = True
    End If
Next

If Not ThisWorkbook.IsAddin Then Exit Sub
Application.Workbooks.Add
    If Not ExtensoInstalado Then
        If Not naLista Then
            AddIns.Add (ThisWorkbook.FullName)
            MsgBox "O suplemento 'Extenso' foi instalado com sucesso...", vbInformation, "Suplemento instalado..."
        End If

            For Each nAddIn In AddIns
                If nAddIn.Name = ThisWorkbook.Name Then
                    nomeArq = nAddIn.Title
                End If
            Next
       
        Application.EnableEvents = False
        AddIns(nomeArq).Installed = True
        Application.EnableEvents = True
       
   
    End If
End Sub


O restante da UDF você pode ver no AddIn.

Tags: , , ,

VBA

Microsoft Office Project 2007 Definindo Duração do Projeto

Em outro vídeo sobre o Microsoft Office Project 2007, eu discuti como definir períodos úteis. Neste vídeo, mostro como você pode determinar a duração de seu projeto no Microsoft Office Project 2007.



Tags: ,

Microsoft Office

Office 2010 Personalizando o Ribbon via XML (autoScale)

Todos sabemos como era difícil customizar (ou personalizar, se preferir) o Office 2007. Isso mudou bastante no Office 2010 e ficou tudo bem mais simples. Uma grande novidade nesta personalização da Faixa de Opções (também conhecida como Ribbon ou RibbonX) esta ligada a escala dos grupos.

Anteriormente, somente os grupos padrões da Faixa de Opções podiam colapsar, agora, foi introduzido o atributo autoScale o qual é utilizado para determinar se um grupo personalizado deve ou não colapsar quando reduzimos o tamanho da Faixa de Opções.

Aproveite para fazer o nosso curso de programação VBA.



Figura 1: Grupo da Faixa de Opções expandido

O grupo "Minhas Ferramentas", no momento, está expandido normalmente. Mas supondo que a configuração da tela ou do monitor seja modificada, nós obteríamos o seguinte resultado com o autoScale="true":
 


Figura 2: Grupo da Faixa de Opções colapsado

Se continuarmos reduzindo a Faixa de Opções, o grupo continua o processo, colapsando ainda mais os elementos de nosso grupo:


Figura 3: Botões colapsados para um splitButton

Para implementar esta customização / personalização da Faixa de Opções (Ribbon) basta adicionar o atributo autoScale e determinar o seu valor como sendo "true".

Note que este atributo deve ser determinado para cada grupo separadamente, ele não tem efeito global sobre os outros grupos em seu Ribbon. 

Tags: , , ,

Microsoft Office

Excel 2010 Formatação Condicional Barra de Dados

Neste vídeo dou uma rápida prévia sobre a nova formatação condicional utilizando barra de dados no Excel 2010. Como todos já sabem, o Excel 2007 já vem com várias ferramentas de business intelligence e tais ferramentas foram melhoradas no Excel 2010. Neste caso específico, nós saímos de barras de dados simples para barra de dados turbinadas, com muitas novidades para todos os amantes de Excel.



Tags: , , , ,

Microsoft Office

Excel 2010: Novos elementos do copiar e colar

Neste vídeo dou uma rápida prévia sobre o copiar e colar no Office 2010, em especial no Excel 2010. Como todos já sabem, o Office 2010 introduziu o Live Preview que é uma visualização prévia de uma formatação. Pois bem, este live preview foi transferido para o copiar e colar, trazendo grandes ganhos e benefícios para os usuários.

Tags: , , , ,

Microsoft Office

Curso Excel 2003 sobre ADO e ADOX (ActiveX Data Objects) - Parte 5

CURSO ADO e ADOX COMPLETO

 

Caso você ainda não tenha lido a quarta parte, você pode acessá-la em ADO ADOX (ActiveX Data Objects).


2.7.     Tratamento de Erros

Dada a natureza estrita de um banco de dados será impossível ter um código infalível, portanto, é importante que o leitor saiba tratar os erros que possam aparecer para que possíveis problemas sejam resolvidos.

No código anterior possuo um tratamento de erro, embora não o use em todos os exemplos deste curso para não ser pedante com cada código escrito.

Geralmente utilizamos as seguintes instruções para lidar com os erros:

·         On Error GoTo “Rótulo”

·         On Error Resume Next

No primeiro caso, quando o erro ocorre o código é remitido para um rótulo dentro da rotina, por exemplo:

Sub RecordsetLike(ByVal strBusca As String, ByVal Tipo As String)

   

    On Error GoTo Err_Handler

'   Código a ser executado entra aqui

 

    Exit Sub

 

Err_Handler:

    MsgBox Err.Description, vbCritical, Err.Number

    Resume Limpar

End Sub

Note que antes do rótulo há a instrução Exit Sub. Esta instrução se faz necessária para evitar a execução do código logo abaixo do rótulo. Esta parte somente é executada quando há um erro.

O leitor pode ou não definir uma mensagem personalizada, mas se o erro é imprevisível o melhor e deixar em aberto a questão e passar a descrição do erro e o número do erro como é feito no exemplo acima.

Uma outra forma de tratar o erro é utilizar a segunda instrução conforme abaixo:

Sub RecordsetLike(ByVal strBusca As String, ByVal Tipo As String)

   

    On Error GoTo Err_Handler

   

'   Código a ser executado entra aqui

   

Limpar:

    On Error Resume Next

    rs.Close

    Set rs = Nothing

    Exit Sub

 

Err_Handler:

    MsgBox Err.Description, vbCritical, Err.Number

    Err.Clear

    Resume Limpar

End Sub

On Error Resume Next instrui o VBA a continuar a operação em caso de erro. O leitor precisa notar duas coisas aqui:

1.Adição da linha Err.Clear à Adiciono esta linha para limpar o erro causado antes do rótulo Limpar. O motivo para isso é que acima nós resumiremos o código neste ponto após o primeiro erro porém...

2.... Ao resumir no rótulo Limpar caso o primeiro erro tenha sido na abertura do recordset nós não teremos nenhum recordset para fechar o que causaria novo erro (conforme figura abaixo). Então, nós limpamos o erro antes de seguirmos para o rótulo Limpar e ali instruímos o código a continuar em caso de novo erro. Se não fizermos isso, entramos em um loop eterno na primeira instrução On Error GoTo:

Figura 25 Erro retornado ao tentar fechar recordset que ainda não foi aberto

Obviamente que apenas passar a mensagem ao usuário não resolve o seu caso, pois você deseja saber o que está ocorrendo e caso o problema seja no código, você quererá corrigi-lo para evitar recorrência dos problemas.

Como estamos lidando com um banco de dados, talvez a melhor forma de fazermos isso seja através de uma tabela onde “logamos” os erros os quais são futuramente analisados e caso sejam problemas no código os mesmos sejam retificados.



CURSO ADO e ADOX COMPLETO

 

Tags: , , , , ,

Microsoft Office | VBA