Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Tomek_T

Excel - Konwertowanie ciągu znaków z literą E np. 123456E7

Rekomendowane odpowiedzi

Witam,

 

Mam problem z konwersją tekstu, a raczej liczby na tekst. Dokładniej mówiąc mam prośbę o podpowiedź, czy można tekst, który excel błędnie zinterpretował jako liczbę, przekonwertować ponownie na tekst np.

 

W bazie danych posiadam ciąg numerów klienta, które składają się zawno z liter jak i cyfr. Zdażają się takie numery, które składają się głównie z liczb, jednak na przedostatnim miejscu znajduje się litera E.

Po wyeksportowaniu pliku do csv i otworzeniu w excel, program automatycznie rozpoznaje taki numer jako liczbę i zmienia zawartość komórki.

Moje pytanie jest takie, czy otrzymując bazę danych z błędnie przekonwertowanymi przez excel numerami jestem w stanie przywrócić ich poprawny zapis? Poniżej przykład:

 

Prawidłowy numer klienta: 123456E7

Zapis widoczny po otworzeniu pliku w excelu: 1.23E+12

Liczba widoczna po edycji komórki: 1234560000000

 

Zdaża się również, że otrzymuję gotowy plik excel, w którym widnieje numer jedynie w formie zapisu 1.23E+12 i muszę ręcznie wyszukiwać klienta aby poprawić zapis jego numeru na 123456E7

 

Czy z formatu liczbowego 1.23E+12 (1234560000000) można jakąś funkcją (lub programem) powrócić do zapisu tekstowego 123456E7 ???

 

Z góry bardzo dziękuję za pomoc

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Odpal Excela, ustaw format całego arkusza na tekstowy, otwórz plik csv w Notatniku, skopiuj zawartość i wklej do Excela.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Odpal Excela, ustaw format całego arkusza na tekstowy, otwórz plik csv w Notatniku, skopiuj zawartość i wklej do Excela.

 

 

Dokładnie tak to robię (zmieniam jeszcze rozszerzenie z csv na txt przed skopiowaniem do excela).

Ale często otrzymuję pliki zapisane już jako excel z błednie skonwertowanym numerem i tutaj właśnie mam problem, bo dane już zostały przez kogoś zapisane w formacie liczbowym i nie wiem jak mam je ponownie przekonwertować na tekst :(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czyżby nikt nie spotkał się z takim przypadkiem czy też nikt nie ma pomysłu jak sobie z nim poradzić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Musi sie odbyc konwertowanie nastepujacy sposob

1234560000000

6 pierwszych liczb + dodanie "E" plus dodanie 1 liczby w zaleznosci od dlugosci ciagu minus 6

I masz oryginalna wartosc

 

Tutaj nalezaloby napisac makro do konwersji. Jesli do wieczora nikt Ci nie pomoze, postaram Ci sie takie przygotowac

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Super, będę bardzo wdzięczny!

 

Musi sie odbyc konwertowanie nastepujacy sposob

1234560000000

6 pierwszych liczb + dodanie "E" plus dodanie 1 liczby w zaleznosci od dlugosci ciagu minus 6

I masz oryginalna wartosc

 

Tutaj nalezaloby napisac makro do konwersji. Jesli do wieczora nikt Ci nie pomoze, postaram Ci sie takie przygotowac

 

 

Super, będę bardzo wdzięczny!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra, na szybko rozkminilem cos takiego

Komorka A1 - wartosc 1234560000000

Wiec

 

W kolumnie B1 zrob formule "=LEWY(A1; 6)"

W kolumnie C1 zrob pole tekstowe, wpisz "E"

W kolumnie D1 zrob formule "=DŁ(A1) - 6"

W kolumnie E1 zrob formule "=ZŁĄCZ.TEKSTY(B1;C1;D1)" - masz wynik :)

 

To tak na surowo, na szybko, ale masz juz wposob na konwersje :) - na podstawie tego rozkiminsz jak to zastosowac do wielu wpisow metoda "przeciagnij"

 

Na podstawie tego co Ci zrobilem - mozesz sobie przygotowac caly arkusz do konwersji gdzie dane wymagajace konwertowania wrzucasz w cala kolumne A a wynik wylatuje w kolumnie E

 

Mam nadzieje, ze wiesz jak to zastosowac i poprawnie uzyc :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisałem sobie taką funkcję "=MID(A1,1,6)&"E"&(LEN(A1)-6)", ale niestety sprawdza się ona w przypadku numerów, w których litera E stoi na przedostatniej pozycji. Niestety zdażają się również numery, w których litera E stoi na przedostatniej pozycji i tutaj już taka funkcja nie działa:

 

Numer 12345E67 po przekonwertowaniu na liczbe ma postać 1.2345E+71 (123450000000000000000000000000000000000000000000000000000000000000000000.00) i niestety tutaj już funcja nie działa :(

 

Mam angielską wersję office'a, stąd nazwy funcji są angielskie)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

12345E68

 

Przebuduj

 

Pozycja 1 + pozycja 3,4,5,6 + "E" + ostatnie dwie cyfry jako liczba minus 4

 

Ewentualnie jak wspomnialem - wieczorem moge wiecej pomoc

Numer klienta zawsze ma postac xxxxxExx ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

12345E68

 

Przebuduj

 

Pozycja 1 + pozycja 3,4,5,6 + "E" + ostatnie dwie cyfry jako liczba minus 4

 

Ewentualnie jak wspomnialem - wieczorem moge wiecej pomoc

Numer klienta zawsze ma postac xxxxxExx ?

 

Niestety numery mogą, choć nie muszą zawierać literę E. Dodatkowo może ona stać na dowolnej pozycji, chociaż problematyczne są tylko te przypadki, w których stoi ona na przedostatniej pozycji lub 3 od końca.

 

I dodatkowo część tzw "subkont" ma postać skróconą, 6 a nie 8 znakową, ale w takim przypadku wszystkie numery mają 6 cyfr (tzn nigdy nie ma tak, że w jednej tabeli występują numery zarówno 6 jak i 8 znakowe)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Edit@

 

W przypadku zapisu 1.2345E+71 - czyli 12345E67 (format xxxxxExx)

 

Formuly aby "zbudowac wynik"

 

=LEWY(A1;1) + =FRAGMENT.TEKSTU(A1;3;4) + "E" + =PRAWY(A1;2) -4

 

@edit

 

Musialbym zobaczyc calosc, wszystkie te numery i kazda z mozliwych kombinacji

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

12345E68

 

Przebuduj

 

Pozycja 1 + pozycja 3,4,5,6 + "E" + ostatnie dwie cyfry jako liczba minus 4

 

Ewentualnie jak wspomnialem - wieczorem moge wiecej pomoc

Numer klienta zawsze ma postac xxxxxExx ?

 

Napisałem na szybko funkcję z Twojego wzoru i działa!

 

"=LEFT(A1,1)&MID(A1,3,5)&RIGHT(A1,2)-4"

 

Póki co bardzo dziękuję, będę jakoś ręcznie sorotował poszczególne przypadki stosował Twoją fukcję. Gdybyś jednak dał radę napisać jakieś makro, które usprawniłoby moją pracę to będę wdzięczny!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spoko, ale jak pisalem - musialbym dostac jakas liste tych numerow i/lub wszelkie mozliwe kombinacje jak moga te numery wygladac

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Edit@

 

W przypadku zapisu 1.2345E+71 - czyli 12345E67 (format xxxxxExx)

 

Formuly aby "zbudowac wynik"

 

=LEWY(A1;1) + =FRAGMENT.TEKSTU(A1;3;4) + "E" + =PRAWY(A1;2) -4

 

@edit

 

Musialbym zobaczyc calosc, wszystkie te numery i kazda z mozliwych kombinacji

 

W załączniku wrzuciłem kilka przykładowych numerów (wersja 6 znakowa). Niestety nawet ja nie znam wszystkich możliwych przypadków. Wiem tylko tyle, że problemem są jak już napisałem wcześniej tylko te przypadki, w których litera E znajduje się na przedostatniej pozycji lub 3 od końca i dodatkowo jest ona jedyną literą. Bo w przypadku, w którym znajduje się więcej niż 1 litera (nie ważne jaka) to excel automatycznie rozpoznaje takie numery jako tekst (np numer 500W53E4)

 

Przykłady w txt, bo exleca nie pozwolił mi wrzucić

Przykłady.txt

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Rozumiem, popoludniu ogarnie sie cos lepszego, ale tymczasowe rozwiazanie masz :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Rozumiem, popoludniu ogarnie sie cos lepszego, ale tymczasowe rozwiazanie masz :)

 

Znalazłem jeszcze przypadek, dla którego ani jedno ani drugie rozwiązanie niestety nie działa.

Jest to numer 44416E11

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A tutaj jeszcze jedno ciekawe spostrzeżenie. Dwa numery (444160E9 oraz 44416E10) posiadają identyczną wartość liczbową 4.44E+14

(444160000000000), więc po przekonwertowaniu numeru na tekst będzie on różny w zależności od przyjętego modelu :(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety ale w tym przypadku (444160E9 oraz 44416E10) konwertuje na jedna i te sama wartosc. Nie jestes w stanie odroznic tych wartosci i nie zrobisz nic. Aby mozna bylo je rozroznic - trzeba je wpisac w pole ktore zostalo przedtem przygotowane (odpowiedni typ danych)

 

Kto to tak w ogole uzupelnia ? Nie widzi, ze po wprowadzeniu danych - ulegaja zmianie ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety często zdaża się tak, że dostaję gotowy plik, w którym mam pełno tego typu kwiatków i wtedy zaczyna się ręczne poprawianie danych. Pał licho jeśli jest kilkanaście, nawet kilkadziesiąt numerów do poprawy, ale czasami są ich setki, a to już jest spory problem niestety

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...