Referenciando uma única linha a várias linhas no Excel

0

Eu tenho uma planilha com uma lista de vendas, uma venda por linha. Para importar esses dados para o meu software de contabilidade, preciso criar uma planilha separada que formata os dados de maneira diferente. Cada linha da primeira planilha ocupará quatro linhas na segunda planilha.

Eu configurei minhas quatro linhas na segunda planilha e fiz todas as referências relativas à primeira linha na primeira planilha. Quando faço uma cópia das quatro linhas, as referências da célula estão incorretas. Por exemplo, as primeiras quatro linhas devem referenciar worksheet1!A1 . As próximas quatro linhas devem referenciar worksheet1!A2 . Mas se eu tentar fazer isso preenchendo A1:A4 , ele referencia worksheet1!A5 .

Eu preciso de uma maneira de duplicar rapidamente essas quatro linhas e ter as referências corretas. Veja como deve ser.

worksheet1!A1 -> worksheet2!A1
worksheet1!A1 -> worksheet2!A2
worksheet1!A1 -> worksheet2!A3
worksheet1!A1 -> worksheet2!A4
worksheet1!A2 -> worksheet2!A5
worksheet1!A2 -> worksheet2!A6
worksheet1!A2 -> worksheet2!A7
worksheet1!A2 -> worksheet2!A8

No momento, é assim que está saindo. Você pode ver que três das linhas de vendas são apenas ignoradas.

worksheet1!A1 -> worksheet2!A1
worksheet1!A1 -> worksheet2!A2
worksheet1!A1 -> worksheet2!A3
worksheet1!A1 -> worksheet2!A4
worksheet1!A5 -> worksheet2!A5
worksheet1!A5 -> worksheet2!A6
worksheet1!A5 -> worksheet2!A7
worksheet1!A5 -> worksheet2!A8

Provavelmente, é uma maneira muito fácil e óbvia de fazer isso, mas minhas habilidades no Excel são limitadas e não consegui encontrar nada no Google.

Solução:

Consegui descobrir uma maneira de fazer isso. Ele apenas divide o número da linha por quatro e depois arredonda para o número inteiro mais próximo.

=INDIRECT("'worksheet1'!A"&ROUNDUP(ROW()/4, 0))

# My real world version looks more like this, as my rows don't actually start on row 1

=INDIRECT("'worksheet1'!A"&ROUNDUP((ROW()-1)/4, 0) + 8)
    
por user151073 08.08.2012 / 15:09

1 resposta

0

Supondo que você está começando em A1 na segunda planilha, você pode preencher a seguinte fórmula na coluna A para obter os resultados desejados.

=IF(INT((ROW()+3)/4)=(ROW()+3)/4,INDIRECT("worksheet1!A"&(ROW()+3)/4),"")

É um pouco confuso e vai dificultar a auditoria da sua planilha, mas ela fará o trabalho. Se você precisa de fórmulas claras e fáceis de seguir, o VBA provavelmente é o caminho a ser seguido.

    
por 08.08.2012 / 15:41