Eu tenho uma tabela do Excel com transações contábeis que são armazenadas em uma única linha:
Data | Para conta | Da conta | Quantia | Tipo |
---|---|---|---|---|
01/06/2023 | 2192 | 2281 | $ 100,00 | Transferir |
Estou tentando converter essa única linha em transações de entrada dupla como esta:
Data | Para conta | Da conta | Quantia | Tipo |
---|---|---|---|---|
01/06/2023 | 2192 | $-100,00 | Despesa | |
01/06/2023 | 2281 | $ 100,00 | Receita |
Tenho milhares de entradas e precisarei atualizá-las regularmente (várias vezes por mês), por isso estou procurando uma maneira sistemática de repetir o processo. A única solução que encontrei, até agora, é copiar os registros e usar colunas auxiliares para particionar os dados com base no fato de a linha ser a original ou a cópia. Estou aberto a uma solução Excel, Power Query, SSIS ou SQL (os dados acabarão em um banco de dados SQL Server). Eu gostaria de evitar o VBA.
O Power Query fará isso com bastante facilidade. Coloque seus dados em uma tabela para usar como fonte ou talvez use uma fonte de dados externa, como CSV ou SQL.
No entanto, você obtém os dados em PQ em um formato semelhante ao seu post, então você quer certificar-se de que a etapa Changed Type está definindo tipos de dados adequados para cada coluna. Remova a coluna "Tipo" que você não precisa.
Achei útil renomear "Valor" para "Valor original" neste ponto, para que eu possa reutilizar o nome da coluna posteriormente. Selecione Valor e data originais e vá para Transformar > Colunas não dinâmicas > Outras colunas.
Este é o passo crucial para obter duas linhas onde havia apenas uma. Depois disso, você precisa adicionar várias colunas condicionais para obter os valores "Para a conta" em uma coluna chamada "Para a conta" e nulos para as outras e vice-versa para "Da conta".
A nova coluna "Valor" é um pouco mais complicada. Você pode executar várias etapas e excluir as colunas intermediárias ou escrever uma fórmula personalizada do zero ou em algum lugar intermediário - adicione uma coluna condicional que procure por To / From e, em AMBOS os casos, retorne a coluna Valor. Em seguida, na barra de fórmulas, basta editar a metade disso inserindo "-1 *" na frente de [Valor original].
Da mesma forma, adicione uma coluna condicional para Tipo (Receita ou Despesa)
Altere a coluna Valor para o tipo de dados Moeda (ou decimal, se preferir, mas decimais fixos geralmente são úteis). Remova as colunas indesejadas para manter apenas as colunas necessárias (portanto, livre-se de Valor, Atributo e Valor Original).
Feche e carregue - bom para ir! Seu código M (no Editor Avançado) ficará mais ou menos assim:
Aqui está outro método usando o Power Query:
Também seria possível incluir a tomada de decisão com base no número da conta para decidir sobre o Tipo e se o Valor deve ser negativo ou não.