Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VBA] wyodrębnianie ciągu liczb z tekstu

KalinaB 06 Mar 2017 11:53 462 7
  • #1 06 Mar 2017 11:53
    KalinaB
    Poziom 2  

    Witam,
    Mam problem z przygotowywaniem co miesiąc rozliczeń.
    Chciałabym usprawnić ten proces ale niezbędne jest automatyczne wyciąganie liczby z ciągu znaków.
    Poniżej przykłady:

    nazwa_12345678901234567890123456_11111_1111
    przyklad_nazwa_12345678901234567890123456_11112_1231

    Chodzi o wyciągnięcie tych 26 cyfr ze środka. Niestety nie mam na to pomysłu z uwagi na to, że początek zawsze jest inny i może zawierać inna liczbę znaków.
    Ktoś pomoże napisać to w VBA?

    0 7
  • #2 06 Mar 2017 12:29
    kinggustav
    Poziom 19  

    Jeżeli nie istnieje algorytm, to jak zamierzasz go zapisać w jakimkolwiek języku? Nigdy nie będzie pewności, że wyciągniesz to co zamierzasz.
    Musisz znaleźć jednak jakąś regułę. Może kluczem jest znak "_" przed i po?

    0
  • #3 06 Mar 2017 12:33
    KalinaB
    Poziom 2  

    Wiem, że zawsze jest to 26 znaków, które rozpoczynają się i kończą "_".

    0
  • #4 06 Mar 2017 13:03
    viayner
    Poziom 33  

    Witam,
    przykladowy algorytm:
    - traktujesz ciag jak tablice, czytasz po 1 znaku od poczatku ciagu i gdy znak odpowiada cyfrze to go podstawiasz do innej zmiennej a gdy nie to idziesz dalej lub gdy odpowiada "nie cyfrze" to go usuwasz.
    Nie wiem czy "_" maja zostac ale to tylko dodatkowy warunek w np. funkcji IF...
    Czy cos jest na koncu tego ciagu czy zawsze sie on konczy 26cyframi ? jezeli tak to po prostu kopiuj ostatnie 26 znakow. Podobnie gdy dlugosc "pola cyfr" jest stala jak na zalaczonym przykladzie, czyli kopia ostatnich 37 znakow i odciecie tych 11 z konca.
    Pozdrawiam

    0
  • #5 06 Mar 2017 13:31
    adamas_nt
    Moderator Programowanie

    A gdyby Spli'tem go?

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #6 06 Mar 2017 13:43
    cbrman
    Poziom 27  

    Można zastosować wyrażenia regularne

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    albo następującej formuły tablicowej:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    0
  • #7 06 Mar 2017 17:30
    clubs
    Poziom 29  

    Witam
    A może jeszcze tak :)

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #8 07 Mar 2017 09:53
    kinggustav
    Poziom 19  

    Z numerem rachunku bankowego nie ma żartów. Dlatego połączyłbym obie metody: najpierw split, a potem sprawdzić wyrażeniem regularnym (lub inaczej) czy rzeczywiście jest 26 cyfr. Można jeszcze na koniec sprawdzić sumę kontrolną, algorytmy do tego są opisane w internecie.

    0