logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA Excel - "Liczba w tej komórce sformatowana jest jako tekst"

karola0921 20 Sty 2017 14:59 5616 13
REKLAMA
  • #1 16214308
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    Podczas importu danych niektóre z nich po imporcie sformatowanejako tekst.
    Niema tam apostrofu, a po podwójnym kliknięciu na komórkę jej zawartość zostaje przesunięte do lewej strony i zmienia się w liczbę.
    Mogę też kliknąć na ten wykrzyknik i wybrać konwertuj na liczbę. Daje ten sam efekt. (tj liczba zostaje prze-konwertowana)

    VBA Excel - "Liczba w tej komórce sformatowana jest jako tekst"

    Wie ktoś jak można uzyskać taki efekt z poziomu VBA ?

    *Próbowałam nagrać to konwertowanie ale rejestrator nic nie zapisuje tylko" select range".
    *Sprawdziłam też formatowanie, jest "liczbowe" (0,00)
  • REKLAMA
  • Pomocny post
    #2 16214354
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Jaki separator dziesiętny w systemu?
    Sprobuj zmienic w arkuszu "," na "."
  • #3 16214485
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    JRV napisał:
    Jaki separator dziesiętny w systemu?
    Sprobuj zmienic w arkuszu "," na "."


    dziwne nie działa ale pomyliłam się i zapisałam ...tak

    rng(1).Replace ".", "."

    tym bardziej dziwne że w pliku źródłowym niema ".".

    Dodano po 6 [minuty]:



    rng(1).Replace ".", ","

    tym bardziej dziwne że w pliku źródłowym niema ".".

    przepraszam jednak nie działa.
  • REKLAMA
  • #4 16214778
    Andie
    Poziom 22  
    Posty: 764
    Pomógł: 84
    Ocena: 19
    Najlepiej załącz przykładowy plik, jaki chcesz zaimportować
  • #5 16215046
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Andie napisał:
    przykładowy plik, jaki chcesz zaimportować

    Lub pierwsze 4...5 wierszy z niego
  • #6 16215072
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    Proszę to fragment pliku źródłowego
    Załączniki:
    • test.xls (717 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 16215106
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Andie napisał:
    przykładowy plik, jaki chcesz zaimportować
    To nie źródłowy, to juz zaimportowany. Myślę, że są importowane z tekstu, ten nas interesuje.
    Do slowa w tom test.xls wszystkie wartosci excel widze jak liczby
  • #8 16215181
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    To jest źródłowy.
    Plik jest zapisywany przez firmowy program. Jest plikiem txt ale przez błąd programu zapisywany z rozszerzenie ".xls".
    Jak użyjesz metody open
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    a następnie przekopiujesz zakres do innego pliku przez VBA\ ("range.copy \\\ pastespecial")
    to będzie taki efekt jak na obrazku w pierwszym poście.

    Podsumowując.
    To się dzieje podczas przenoszenia niektórych wartości.
    Wcześniej radziłam sobie metodą "replace" tak jak pisałeś.
    Tylko różnie z tym bywa czasami wywala mi przecinki dlatego tego już nie robię.
  • REKLAMA
  • #9 16215239
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Racja. tekst. U mnia excel otwiera to poprawnie, wszystko jako liczby,
    kopie i paste xlValues to samo poprawnie(liczby)
    karola0921 napisał:
    zakres do innego pliku przez VBA\ ("range.copy \\\ pastespecial

    Byc moze w innym pliku format tekstowy(komorki gdzie pastespecial)?
  • #10 16215279
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    sprawdzałam na pustym arkuszu. (na office 2016)

    nie wiem dlaczego ale jak zrobię "replace" a potem
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    to problem znika...

    W każdym razie działa...
    Sprawdzę jeszcze w pracy i dam znać.; D
    Dziękuje za pomoc i zaangażowanie.
  • #11 16215688
    Andie
    Poziom 22  
    Posty: 764
    Pomógł: 84
    Ocena: 19
    Jeśli problem będzie nadal występował, może trzeba przed importem zmienić rozszerzenie pliku na txt - i dopiero zaimportować go jako normalny tekst, a na etapie importu określić właściwy format danych (można także przy zastosowaniu odpowiedniego kodu)

    andie
  • REKLAMA
  • #12 16216730
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Jeśli komórki w arkuszu mają format Ogólny, to powinno zadziałać to, co próbowałeś:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    Kropka jest separatorem dziesiętnym w VBA, a Excel konwertuje to automatycznie na liczby w formacie lokalnym.
  • #13 16217014
    karola0921
    Poziom 6  
    Posty: 45
    Ocena: 4
    Andie napisał:
    Jeśli problem będzie nadal występował, może trzeba przed importem zmienić rozszerzenie pliku na txt - i dopiero zaimportować go jako normalny tekst, a na etapie importu określić właściwy format danych (można także przy zastosowaniu odpowiedniego kodu)

    andie



    Już próbowałam, jest jakaś inna metoda zmiany rozszerzenia niż moja ?
    Robię to przez wygenerowanie i i uruchomienie pliku ".bat"z poziomu VBA dzięki czemu dostaje dostęp do cmd ale w pracy antywirus szaleje przez to : / (Zwłaszcza przy operacjach na plikach)

    Chociaż to w sumie już sprawa na nowy temat... ale jak masz jakiś prosty przepis to napisz.; )
  • Pomocny post
    #14 16217139
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Witam

    Możesz również przemnożyć wszystko przez 1
    =A1*1

Podsumowanie tematu

✨ Podczas importu danych do Excela, niektóre wartości są formatowane jako tekst, co powoduje problemy z ich dalszym przetwarzaniem. Użytkownik zauważył, że po podwójnym kliknięciu na komórkę lub kliknięciu na wykrzyknik, wartości te można skonwertować na liczby. W odpowiedziach zasugerowano różne metody rozwiązania problemu, w tym użycie funkcji Replace w VBA, zmiany formatu komórek, a także przemnożenie wartości przez 1. Użytkownik próbował również zmienić rozszerzenie pliku na .txt przed importem, aby poprawnie określić format danych. W końcu, po zastosowaniu metody Replace oraz ustawieniu formatu komórek, problem został rozwiązany.
Wygenerowane przez model językowy.
REKLAMA