domingo, 14 de agosto de 2016

VBA: Limites do método “Transpose”


Como evitar o 1004 e/ou erro 13 ao Transportar dados... 



Introdução

O que é este método? Trecho da ajuda online MSDN aqui

Observação: retorna um intervalo de células verticais como intervalo horizontal, ou vice-versa. Use a função Transpose para inverter a orientação vertical e horizontal de uma planilha. 

Assim sendo, em primeiro lugar, é preciso prestar atenção aos limites da planilha. 

Limites por versão

Dica a ser lida para conhecer as limitações das planilhas. 

No Excel 2003, se você quiser transpor, em colunas, um trecho de 1.000 linhas, você vai, inevitavelmente, travar, já que ele só tem 256 colunas. Idem no 2007, se você copiar 16.385 linhas e quiser transpô-las em colunas. 

Sim, mas então, quando trabalhamos em memória nas variáveis de tabelas, esses limites não existem!... 

Limites na memória

Ao trabalhar com grandes variáveis de tabelas, você pode querer transpô-las para coloca-las em uma planilha. Por exemplo, é muito comum ter em memória uma tabela de uma dimensão (logo, em "colunas") de 100 mil dados. Portanto, para coloca-los na planilha, basta usar:
[A1].Resize(UBound(tb)) = Application.Transpose(tb)

Infelizmente, você obtém um erro 13 (ou 1004, dependendo do caso). 

Observação: O método Transpose se limita a 65.536 valores. </bold> 

Como resolver este problema

Para resolver esse problema, você deverá trabalhar por “pacotes” de 65 mil valores ou criar sua função personalizada.

Saiba mais

Veja um exemplo de função Transpose aqui
Foto: © Microsoft.comFonte: http://br.ccm.net/faq/
Anterior
Proxima

Postador

0 comentários:

Os comentários serão moderados antes de publicar! respondo todos, obrigado por comentar.