Tutorial: Limpar e normalizar dados da pasta de trabalho do Excel

Este tutorial ensina a ler dados de uma pasta de trabalho com um Script do Office para Excel. Você estará escrevendo um novo script que formatará um extrato bancário e normalizará os dados desse extrato. Como parte desta limpeza de dados, seu script lerá os valores das células de transação, aplicará uma fórmula simples a cada valor e gravará a resposta resultante na pasta de trabalho. A leitura os dados da pasta de trabalho permite a automatização de alguns dos seus processos de tomada de decisão no script.

Dica

Se você não estiver familiarizado com os Scripts do Office, recomendamos começar com o Tutorial: Criar e formatar uma tabela do Excel. Os Scripts do Office usam TypeScript e este tutorial se destina a pessoas com conhecimento de nível iniciante a intermediário em JavaScript ou TypeScript. Se você é novo no JavaScript, recomendamos começar com o tutorial da Mozilla sobre JavaScript.

Pré-requisitos

Você precisará de acesso aos Scripts do Office para este tutorial. Examine o suporte à plataforma se a guia Automatizar não aparecer.

Ler uma célula

Os scripts feitos com o Gravador de Ação só podem gravar informações na pasta de trabalho. Com o Editor de Códigos, é possível editar e criar scripts que também leem dados de uma pasta de trabalho.

Comece criando um script que lê dados e age com base no que foi lido. Ao longo do tutorial, você trabalhará com um exemplo de extrato bancário. Essa instrução é um relatório combinado de verificação de crédito. Infelizmente, o banco relata as mudanças de saldo de maneira diferente. A declaração de verificação exibe o rendimento como crédito positivo e custos como débito negativo. O demonstrativo de crédito faz o oposto.

No restante do tutorial, você normalizará esses dados usando um script. Primeiro, você precisa ler os dados da pasta de trabalho.

  1. Crie uma nova planilha na pasta de trabalho usada para o resto do tutorial.

  2. Copie os seguintes dados e cole-os na nova planilha, começando na célula A1.

    Data Conta Descrição Débito Crédito
    10/10/2019 Verificando Vinícola Coho -20.05
    11/10/2019 Crédito A Companhia Telefônica 99.95
    13/10/2019 Crédito Vinícola Coho 154.43
    15/10/2019 Verificando Depósito externo 1000
    20/10/2019 Crédito Vinícola Coho – Reembolso -35.45
    25/10/2019 Verificando Ideal para sua empresa de produtos orgânicos -85.64
    01/11/2019 Verificando Depósito externo 1000
  3. Vá para a guia Automatizar e selecione Nova criação de script>no Editor de códigos.

  4. Limpe a formatação. Este é um documento financeiro, portanto, peça ao seu script que altere a formatação do número nas colunas Débito e Crédito para mostrar os valores como valores em dólares. Além disso, faça com que seu script ajuste a largura da coluna aos dados.

    Substitua o conteúdo do script pelo código a seguir:

    function main(workbook: ExcelScript.Workbook) {
        // Get the current worksheet.
        let selectedSheet = workbook.getActiveWorksheet();
    
        // Format the range to display numerical dollar amounts.
        selectedSheet.getRange("D2:E8").setNumberFormat("$#,##0.00");
    
        // Fit the width of all the used columns to the data.
        selectedSheet.getUsedRange().getFormat().autofitColumns();
    }
    
  5. Agora, leia um valor de uma das colunas de número. Adicione o seguinte código ao final do script (antes do fechamento }).

    // Get the value of cell D2.
    let range = selectedSheet.getRange("D2");
    console.log(range.getValues());
    
  6. Execute o script.

  7. Você deverá ver [Array[1]] no console. Isso não é um número porque os intervalos são matrizes bidimensionais de dados. Esse intervalo bidimensional está sendo registrado diretamente no console. Felizmente, o Editor de Códigos permite visualizar o conteúdo da matriz.

  8. Quando uma matriz bidimensional é registrada no console, ela agrupa os valores de coluna em cada linha. Expanda o registro da matriz selecionando o triângulo azul.

  9. Expanda o segundo nível da matriz selecionando o triângulo azul recém-revelado. Agora, você deverá ver isto:

    O log do console exibindo a saída '-20.05', aninhado em duas matrizes.

Modificar o valor de uma célula

Agora que o script pode ler dados, use esses dados para modificar a pasta de trabalho. Torne o valor da célula D2 positivo com a Math.abs função. O objeto Matemática contém várias funções às quais seus scripts têm acesso. É possível encontrar mais informações sobre Math e outros objetos internos Usando objetos JavaScript internos nos scripts do Office.

  1. Uso getValue e setValue métodos para alterar o valor da célula. Esses métodos funcionam em uma única célula. Ao lidar com intervalos de várias células, use getValues e setValues. Adicione o código a seguir ao final do script.

    // Run the `Math.abs` method with the value at D2 and apply that value back to D2.
    let positiveValue = Math.abs(range.getValue() as number);
    range.setValue(positiveValue);
    

    Observação

    Estamos lançando o valor retornado de range.getValue() para um number usando a palavra-chave as. Isso é necessário porque um intervalo pode ser cadeias de caracteres, números ou booleanas. Nesta instância, precisamos explicitamente de um número.

  2. O valor da célula D2 agora deverá ser positivo.

Modificar os valores de uma coluna

Agora que você sabe como ler e gravar em uma única célula, pode generalizar o script para funcionar em todas as colunas de Débito e Crédito .

  1. Remova o código que afeta apenas uma única célula (o código de valor absoluto anterior), de modo que o script agora se pareça com este:

    function main(workbook: ExcelScript.Workbook) {
        // Get the current worksheet.
        let selectedSheet = workbook.getActiveWorksheet();
    
        // Format the range to display numerical dollar amounts.
        selectedSheet.getRange("D2:E8").setNumberFormat("$#,##0.00");
    
        // Fit the width of all the used columns to the data.
        selectedSheet.getUsedRange().getFormat().autofitColumns();
    }
    
  2. Adicione um loop que percorra as linhas nas duas últimas colunas. Para cada célula, o script define o valor para o valor absoluto do valor atual.

    Observe que a matriz que define a localização das células é baseada em zero. Isso significa que a célula A1 é range[0][0].

    // Get the values of the used range.
    let range = selectedSheet.getUsedRange();
    let rangeValues = range.getValues();
    
    // Iterate over the fourth and fifth columns and set their values to their absolute value.
    let rowCount = range.getRowCount();
    for (let i = 1; i < rowCount; i++) {
        // The column at index 3 is column "4" in the worksheet.
        if (rangeValues[i][3] != 0) {
            let positiveValue = Math.abs(rangeValues[i][3] as number);
            selectedSheet.getCell(i, 3).setValue(positiveValue);
        }
    
        // The column at index 4 is column "5" in the worksheet.
        if (rangeValues[i][4] != 0) {
            let positiveValue = Math.abs(rangeValues[i][4] as number);
            selectedSheet.getCell(i, 4).setValue(positiveValue);
        }
    }
    

    Essa parte do script faz várias tarefas importantes. Primeiro, ela obtém os valores e a contagem de linhas do intervalo usado. Isso permite que o script analise os valores e saiba quando parar. Segundo, ela reitera através do intervalo usado, verificando cada célula nas colunas Débito ou Crédito. Por fim, se o valor na célula não for 0, ele será substituído pelo valor absoluto. O script ignora zeros, para que você possa deixar as células em branco como estavam.

  3. Execute o script.

    Seu extrato bancário agora deve ter números positivos formatados corretamente.

    Uma planilha mostrando o extrato bancário como uma tabela formatada apenas com valores positivos.

Próximas etapas

Abra o Editor de Código e experimente alguns dos nossos Scripts de exemplo para Scripts do Office no Excel. Você também pode visitar Fundamentos de Scripts do Office no Excel para saber mais sobre como criar Scripts do Office.

A próxima série de tutoriais de Scripts do Office tem foco na utilização de Scripts do Office com o Power Automate. Saiba mais sobre as vantagens de combinar as duas plataformas em Executar Scripts do Office com o Power Automate ou experimente o Tutorial: Atualize uma planilha de um fluxo do Power Automate para criar um fluxo do Power Automate que use um Script do Office.