Niedawno otrzymałem tę rozdzierającą serce prośbę od czytelnika, który najwyraźniej walczył od jakiegoś czasu i doszedł do kresu wytrzymałości: mam listę produktów, które sprzedajemy, a jednym z pól jest UPC – to pole może mieć do 18 cyfr. Kiedy dodam więcej niż 15 cyfr, Excel automatycznie zaokrągla ostatnie trzy do 000. Jeśli ustawię to pole na tekst, doda +E11 na końcu ciągu. Nie ma znaczenia, czy mam szerokość kolumny dłuższą niż trzykrotność normalnej długości. Jak mogę to naprawić?
Chciałbym tylko, aby Excel zrobił to, co mu kazano, bez konieczności dodawania rzeczy. Na przykład, jeśli format komórki to TEKST, nie formatuj w niej niczego! Wygląda na to, że muszę użyć programu Access tylko po to, aby wprowadzić drobne zmiany w pliku CSV — aby używać programu Access jako arkusza kalkulacyjnego zamiast arkusza kalkulacyjnego. Zastanawiam się, czy OpenOffice robi to samo.
Nie ma znaczenia, jaki jest rozmiar liczby ani gdzie jest umieszczona kropka dziesiętna, program Excel zapisze tylko pierwsze 15 cyfr znaczących i odrzuci całą resztę
jak wyburzyć ściany w rdzy
Istnieją pewne podstawowe ograniczenia każdego oprogramowania, a Excel nie jest wyjątkiem. Program Excel może przechowywać liczby tylko do 15 cyfr znaczących, ponieważ korzysta z matematyki zmiennoprzecinkowej IEEE, która określa sposób przechowywania liczb — które mogą być tak duże jak 1,79769313486231E+308 lub tak małe jak 2,229E-308 — bez zmuszania skoroszytu do zajmowania gigabajtów miejsce i ponowne obliczenie zajmie kilka godzin. To ograniczenie jest jasno określone w tekście pomocy programu Excel.
Zauważ, że cyfry znaczące to nie to samo co miejsca dziesiętne; nie ma znaczenia, jaki jest rozmiar liczby lub gdzie znajduje się przecinek dziesiętny, Excel zapisze tylko pierwszych 15 cyfr znaczących i odrzuci całą resztę.
UPC to skrót od Universal Product Code, który w rzeczywistości jest symboliczną lub kodową nazwą złożoną z cyfr, a nie liczbą matematyczną.
Dodawanie lub odejmowanie dwóch kodów UPC nie ma sensu i nie prowadzi do kolejnego ważnego kodu UPC, mimo że każdy kod składa się wyłącznie z cyfr. Jeśli nie wykonujesz żadnych obliczeń matematycznych na swoich danych, tak jak w przypadku UPC, możesz zmusić program Excel do przechowywania ich jako tekstu, wpisując apostrof przed wpisaniem pierwszej cyfry. To mówi programowi Excel, że to, co piszesz, nie jest liczbą, mimo że wygląda jak jedna, i że powinna być przechowywana jako tekst.
Alternatywnie, jeśli sformatujesz komórkę jako tekst, a następnie wpiszesz do niej długi ciąg cyfr, program Excel zrobi dokładnie to, czego można oczekiwać i zachowa wszystkie jej cyfry, ponieważ traktuje je jako znaki tekstowe, a nie cyfry. Jeśli jednak zapomnisz sformatować komórkę jako tekst przed wpisaniem cyfr lub jeśli nie wpiszesz wiodącego apostrofu, program Excel potraktuje cyfry jako liczbę, a po wprowadzeniu danych zostanie obcięty do 15 cyfry znaczące i nie można odzyskać utraconych cyfr.
Co więcej, importowanie danych z pliku CSV różni się od wpisywania danych bezpośrednio do Excela, ponieważ plik CSV nie zawiera żadnych wskazówek co do formatu danych w swoich polach. Po dwukrotnym kliknięciu pliku CSV, aby otworzyć go w programie Excel, lub podczas korzystania z pliku Excel | Otwórz okno dialogowe, program Excel zgadnie, że wszystkie pola zawierające wszystkie cyfry mają być traktowane jako liczby, co jest najczęściej oczekiwane. Nie ma znaczenia, czy te pola są ujęte w cudzysłów: jeśli wszystkie są cyframi, Excel po prostu zakłada, że są to liczby.
Jeśli jednak zamiast tylko otworzyć plik CSV, klikniesz Dane | Pobierz dane zewnętrzne | Z Tekstu uzyskasz kontrolę nad procesem importowania i możesz wybrać format dla każdej kolumny danych, dzięki czemu możesz powiedzieć programowi Excel, że długie ciągi cyfr powinny być traktowane jako tekst, a nie jako liczby.
OpenOffice przyjmuje dokładnie te same założenia: za każdym razem, gdy wpiszesz lub zaimportujesz dane, które wyglądają jak liczba, zarówno OpenOffice, jak i Excel potraktują je domyślnie jako liczbę, a jeśli chcesz zastąpić to całkowicie rozsądne założenie, musisz podać zastosowanie jakiejś pomocy.