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

Excel-makro zmieniające dane znaki na polskie litery

jakubstan 07 Lip 2012 23:26 11694 18
REKLAMA
  • #1 11082440
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    Witam wszystkich:)
    Przeszukałem całe forum w celu znalezienia odpowiedzi na moje pytanie, jednak niestety nie udało się mi jej znaleźć. Jest to dla mnie bardzo ważne i mam nadzieję, że pomożecie mi w moim problemie.
    Przy kopiowaniu danych z pdfa do excela w miejscu większości polskich liter pojawiają się inne znaki bądź litery.
    Poniżej podaję listę znaków, które należałoby zamienić na polski znak diakrytyczny:
    > - ł
    @ - ś
    C- ą
    B - ę
    F - ż
    M- ń
    K- ć
    Można by ten problem rozwiązać przy pomocy polecenia Znajdź i Zamień (ctrl+H), jednak w moim przypadku, gdzie np zamiast "ą" pojawia się "C", zamieniłoby również wszystkie duże "C" występujące np na początku jakiegoś wyrazu na polski znak. Dlatego ta opcja odpada. Należało by tu uwzględnić, aby makro nie brało pod uwagę pierwszych liter wyrazów, jednak i ta opcja nie rozwiązała by problemu, ponieważ co w przypadku, jeśli natrafi na wyraz ściana lub żwir, gdzie pierwsze litery tych wyrazów będą zastąpione przez błędne znaki i te również należałoby zastąpić. Problem niby nietrudny ale nie wiem czy da się go jakoś rozwiązać....
    Będę wdzięczny za jakąkolwiek pomoc.
  • REKLAMA
  • #2 11082735
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Są dwa wyjścia.
    1. Zdefiniować "słownik" z wyjątkami.
    2. Przyjąć zasadę, że po kropce i spacji, lub znaku nowej linii (przedstawiona lista dotyczy małych liter, od których zwykle nie rozpoczyna się nowe zdanie/akapit) - nie zamieniamy.
    2a. Oba równolegle.
  • REKLAMA
  • #3 11083253
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    Myślę, że sam drugi podpunkt już by rozwiązał mój problem:) Potrafiłbyś coś takiego zrobić? Byłbym Ci bardzo, ale to bardzo wdzięczny.
    Dałoby jeszcze radę uwzględnić w tym makro, aby zmieniało znaki tylko w określonym zakresie komórek?
  • #4 11085332
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    To wrzuć kawał tekstu w pliku Excela. Koniecznie tak, jak masz w oryginale (znaki podziału akapitów, etc mogą się różnić od standardowych).

    Nie musi być cała Biblia, wystarczy kilka akapitów ;)
  • #5 11085542
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    W załączniku przykładowa tabela w której pracuję.
    Przy kopiowaniu opisu robót z pdfa do excela pojawiają się błędne znaki.
    Trzymam kciuki ;)
    Załączniki:
    • tabelka.xls (176 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #6 11085644
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Przyjrzyj się zawartości Np komórki D20, pkt.6, 7 i 11. Żadnych zasad :(
    Czarno to widzę...
  • REKLAMA
  • Pomocny post
    #7 11085986
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #8 11086061
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    W załączniku wynik porannych prób między kawą, a śniadaniem ;)
    Trochę dużo wyjątków...

    Prosto jest z ciągiem Np "beton C40", bo następny znak jest numeryczny. Podobnie można z "beton C-20" itp, ale co z kwiatkami typu: "Obwód DM Brzostek", "typu "Krata"", etc?
    Załączniki:
    • tabelka(1).xls (317 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #9 11086082
    Konto nie istnieje
    Konto nie istnieje  
  • #10 11087854
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    adamas_nt faktycznie jest mały problem z tymi wyjątkami. Najwyżej po zastosowaniu makra trzeba by było przejrzeć te nazwy własne i ewentualnie zmieniać je ręcznie. Możesz wstawić to makro którego użyłeś do poprawy znaków?
    Sam arkusz może być faktycznie trochę nieuporządkowany, jednak nie ja go tworzyłem.
    Marcin230 w załączniku plik PDF
    Załączniki:
    • tabelka.pdf (189.52 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 11088929
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Makro jest w załączonym pliku. Tu z drobnymi zmianami: w makro są dwie pary tablic: zasady i wyjątki, czyli następne wystarczy dopisywać. Niżej sprawdzane jeszcze 3 warunki (liczba po znaku, minus po znaku i liczba na początku akapitu).
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #12 11089419
    Konto nie istnieje
    Konto nie istnieje  
  • #13 11091392
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    Dzięki wyjątkom które wprowadził adamas_nt chyba wszystko działa :D
    Dziękuję wam pięknie za pomoc, a w szczególności Tobie adamas_nt. Jesteś po prostu wielki:)
    Powiedz mi jeszcze tylko, czy po dodaniu wyjątków, muszę jeszcze dodatkowo zmieniać jakąś wartość w marko? Czy po prostu tylko dodać nowy wyjątek?
  • #14 11091420
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Nie, dodajesz po prostu.
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Jedyna uwaga: ilość elementów musi być równa, ale to pewnie sam wydedukowałeś.
  • #15 11094753
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    Sorry, że jeszcze zawracam głowę, ale czy dało by radę dodać do tego makro kawałek w którym będzie można uwzględnić zakres działania makro? tzn. np aby zmieniało znaki tylko w zakresie komórek np. od B6 do H50 ?
  • #16 11095636
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Może InputBox? Np tak przeróbka makra wyżej
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #17 11095922
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    A nie dałoby się jeszcze ograniczyć tego zakresu kolumnami? Bo w oryginalnym arkuszu po prawej stronie mam jeszcze jedną tabelkę i nie chciałbym aby tam czegoś niepotrzebnie nie pozmieniało :)
    Tego InputBoxa muszę tylko dodać do makra, czy coś nim zastąpić? Mogę go wkleić np. zaraz za wyjątkami nic w skrypcie nie zmieniając?
    Moje pytania na pewno wydają się dla was banalne, ale niestety pierwszy raz stykam się z VBA, a chciałbym żeby wszystko ładnie działało ;)
  • #18 11095979
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    jakubstan napisał:
    A nie dałoby się jeszcze ograniczyć tego zakresu kolumnami?
    Makro działa tylko w jednej kolumnie, czwartej (While Cells(wrs, 4)).

    Doklej tylko te 6 linijek i dopisz warunek pętli 'Do'.
  • #19 11098555
    jakubstan
    Poziom 9  
    Posty: 15
    Ocena: 2
    Teraz już wszystko rozumiem:) Jeszcze raz serdeczne dzięki za pomoc :)

Podsumowanie tematu

✨ Użytkownik poszukiwał rozwiązania problemu z błędnymi znakami diakrytycznymi po kopiowaniu danych z PDF do Excela. W odpowiedziach zaproponowano stworzenie makra VBA, które zamieniałoby błędne znaki na polskie litery, z uwzględnieniem wyjątków i zasad dotyczących zamiany. Ustalono, że makro powinno działać w określonym zakresie komórek, a także uwzględniać sytuacje, w których znaki nie powinny być zamieniane, np. na początku wyrazów. Użytkownicy dzielili się przykładami kodu oraz wskazówkami, jak dostosować makro do swoich potrzeb.
Wygenerowane przez model językowy.
REKLAMA