Conforme indicado neste URL , o maior número que o Excel pode manipular é cerca de 10^307.
No entanto, o Excel parece ter problemas com números menores também (cerca de 10^17), como você pode ver no meu exemplo:
Estou trabalhando em um banco de dados SQL-server, que contém códigos de barras como um dos campos nas tabelas. Esses códigos de barras normalmente têm 18 caracteres, como 154105070221597646.
Quando copio esses dados da tabela de banco de dados do servidor SQL (usando o Microsoft SQL Server Management Studio) em uma planilha padrão do MS-Excel, eles se transformam em um número "geral" como 1.54105E + 17), que parece ter um valor real valor 154105070221597000 (lembre-se dos últimos três dígitos que foram transformados em zeros).
Atualmente, copio os dados, mudo o formato dessa coluna para texto e copio tudo novamente, o que está funcionando, mas como preciso fazer isso regularmente, gostaria de ter uma maneira mais simples para isso.
Como posso dizer ao Excel para parar de cortar os últimos dígitos dos meus números?
Para sua informação: se eu inserir o código de barras em uma célula e fizer o "Converter em número", isso também acontece como você pode ver nesta captura de tela:
Primeira opção - formate as células como texto antecipadamente. Eu não gosto muito deste, pois ele precisa dessa etapa extra, mas se as células já estiverem formatadas como texto ANTES de colá-las, essa formatação deve ser mantida.
Segunda opção - minha opção preferida - em vez de copiar do SSMS, use Salvar como para salvar a saída em um arquivo de texto separado por tabulação e abra esse arquivo no Excel usando o Assistente de importação de texto. Durante este processo, você pode selecionar o formato de cada coluna; selecionar Texto como o formato deve garantir que os dados sejam tratados como uma sequência de texto em vez de um valor.
Terceira opção - use uma macro simples para colar os valores. O
Range.PasteSpecial
método no VBA funciona de maneira diferente da funcionalidade PasteSpecial na interface do usuário e colará valores como texto simples se nenhuma outra especificação for fornecida. A macro seria algo comoDessas opções, geralmente prefiro a segunda opção, pois oferece mais controle sobre os dados e não depende da área de transferência às vezes delicada.
Uma dica que o ajudará a criar de forma confiável uma cópia textual completa de seus dados;
Anexe o código de barras (-data) com uma inicial
'
[1] à medida que você gera/exporta os dados do SQL; Isso impedirá o Excel de mexer nele, pois (por isso) é explicitamente definido como "TEXTO" à medida que chega.[1] ou seja
CHAR(39)
, no ExcelComo você está trabalhando com um banco de dados SQL, isso pode ser uma opção.
No SQL Server Management Studio, em vez de fazer uma
SELECT * FROM TABLE
consulta, jogue um concatenado lá para que a célula do Excel trate os dados como texto.SELECT CONCAT('="', [Column], '"') FROM Table.dbo.Database
Isso retornará resultados como este:
Que, no Excel, ficará assim: