Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel/formuły - Jak wyciągnąć numer rachunku z komórki arkusza Excel - plik załą

09 Oct 2020 14:22 339 5
  • Level 2  
    Witajcie forumowicze.
    Szukałem, czytałem i nie mogę znaleźć jak mogę dokonać tego co w tytule. Posiadam arkusz kalkulacyjny z kilku tysiącami wierszy zapisanych jak w pliku dołączonym. Dane załączone podałem przykładowo, poglądowo. Wiersze zapisane są jako tekst, wiec i nr rachunku jest jako tekst. Muszę wyciągnąć nry rachunków do pola obok, po prawej.

    używałem formuł coś w rodzaju:
    =FRAGMENT.TEKSTU(C2;ZNAJDŹ(" ?????????????????????????? ";C2)+1;DŁ(C2)-ZNAJDŹ(" ?????????????????????????? ";C2)-1)
    czyli
    =FRAGMENT.TEKSTU(C2;SZUKAJ.TEKST(" ?????????????????????????? ";C2;1)+1;26)

    tylko częściowo rozwiązują problem. W innych wierszach pojawiają się też przecinki, sredniki, myślniki obok spacji (po oczyszczeniu z nich - bez zmian)..

    Proszę o wasze sugestie. Jak nie znajdę sposobu to czeka na mnie bardzo dużo roboty "z palca".

    Dzięki z góry.

    Pzdr, Adam
    [Szkolenie 22.06.2021, g.9.00] Zabezpieczenia Internetu Rzeczy (IoT) programowe i sprzętowe. Zarejestruj się za darmo
  • Level 22  
    W excel należało by napisać w VBA funkcję, która używa regexp do wydobycia danych - to jest najpewniejsze w przypadku gdy szukany string może występować w danych nieregularnie. Ale jeśli masz konto google i możesz użyć Arkusze Google to wystarczy użyć wbudowanej funkcji REGEXEXTRACT. Do jednorazowej konwersji powinno wystarczyć.

    Kopiujesz plik xls na dysk googla i otwierasz go w arkuszach. W komórce C2 wpisujesz regułę:

    Code: vbscript
    Log in, to see the code

    i przeciągasz ją do dołu. Reguła zrzuca wszyskie 26 cyfrowe numery znalezione w tekście B2. Skonwertowany plik można później wyeksportować do formatu excel.

    Gotowa reguła/funkcja VBA dla Excel dostępna jest tu Link ale z nią pewnie będzie więcej zachodu. Wywołujesz ją podobnie:
    Code: vbscript
    Log in, to see the code
  • Level 37  
    mmarshand wrote:
    Wiersze zapisane są jako tekst, wiec i nr rachunku jest jako tekst.

    Ze względu na specyfikę formatowania "Ogólnego" w Excelu przy manipulacjach takimi 26 stringami szybko napotkać możesz na automatyczną konwersję do postaci typu 1,23457E+25 :D
    Przy imporcie wyciągów bankowych rozwiązywałem ten problem poprzez preparowanie wstępne plików źródłowych tak, że do wszystkich numerów kont dodawałem przedrostek PL :D zabezpieczający przed niepotrzebną konwersją - używając specjalnego kodu VBA :spoko:
    Code: vbscript
    Log in, to see the code
  • Level 2  
    Maciej Gonet wrote:
    =INDEKS(FRAGMENT.TEKSTU(B2;WIERSZ(ADR.POŚR("1:"&DŁ(B2)-25));26);PODAJ.POZYCJĘ(MAX(JEŻELI.BŁĄD(--FRAGMENT.TEKSTU(B2;WIERSZ(ADR.POŚR("1:"&DŁ(B2)-25));26);0));--FRAGMENT.TEKSTU(B2;WIERSZ(ADR.POŚR("1:"&DŁ(B2)-25));26);0))


    Wielkie dzięki Macieju. Kawał dobrej roboty. Jest mi lżej.
    Calixto oraz Prot - też bardzo dziękuję. Przyznam, że ja dopiero raczkuję w funkcjach VBA. Zapewne twój sposób tez działa. Uratował mnie sposób Macieja - bezpośrednia formuła w excel.

    DZIĘKUJĘ Panowie bardzo.
    Jeśli będę mieć jeszcze jakieś pytania to wiem ze tutaj znajdę pomoc.
    Jeszcze raz wielkie dzięki.

    Pzdr, Adam.
  • Level 39  
    Quote:
    ja dopiero raczkuję w funkcjach VBA


    No to taka prosta funkcja:

    Code: vbscript
    Log in, to see the code