Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] VBA: Ekstrakcja parametrów z nazwy produktu do oddzielnej kolumny - Excel

naszamaja15 17 Jan 2022 11:59 780 7
  • #1
    naszamaja15
    Level 3  
    Witam,
    niestety jestem jeszcze zielony z vba.
    Mam listę kilku tysięcy wierszy m.in. z Nazwą produktu i oddzielną listę kilkuset wierszy z Parametrami.

    VBA: Ekstrakcja parametrów z nazwy produktu do oddzielnej kolumny - Excel

    W kolumnie C jest nazwa produktu z parametrem z listy w kolumnie E
    Chcę w kolumnie B podać wpisać parametr z kolumny C.
    Przykładowo w B2 - 74V, B3 - 91V, B4 -91V, B5 - 110H.

    Samym excelem zajęłoby mi to dużo czasu
    Kodem vba poszłoby to szybko, ale niestety jestem jeszcze zielony i nie wychodzi mi to.
    Pomożecie?
  • #2
    kinggustav
    Level 27  
    Niestety nie opisałeś tego zbyt dokładnie, albo to ja nie potrafię tego zrozumieć.
    Proponuję więc uniwersalną metodę: zapytania SQL. Umieszczasz tabele w kolejnych arkuszach i piszesz zapytanie. Wynik możesz zapisać gdzie chcesz.
    W "czystym" też to można zrobić VBA. Żeby uniknąć problemów z wydajnością warto posortować obie tablice względem wspólnego klucza i wtedy możesz to ogarnąć jednym przebiegiem po obu tabelach, szybciej się już chyba nie da.
  • #3
    naszamaja15
    Level 3  
    Tak jak widać na załączonym png w kolumnie E są parametry i chcę w kolumnie B uzyskać, który z tych parametrów jest w konkretnej komórce kolumny C
  • Helpful post
    #4
    Maciej Gonet
    VBA, Excel specialist
    Po pierwsze - załącz plik przykładowy, a nie obrazek (ew plik jako uzupełnienie obrazka).
    Po drugie - opisz bardziej szczegółowo te "parametry". Czy w każdej pozycji kolumny C będzie występował dokładnie jeden? Czy może być 0 lub więcej? Jeśli więcej, to jak mają być wyświetlone? Czy w tekście w kol. C ten "parametr" będzie zawsze oddzielony spacjami od reszty tekstu? Czy będzie występował w określonym miejscu, czy w dowolnym miejscu?
  • #5
    naszamaja15
    Level 3  
    W załączeniu spakowany plik excel.
    W kolumnie C przykładowe dane.
    W kolumnie E pełna lista parametrów. Tylko takie parametry wystąpią.

    Część parametrów składa się z dwóch lub trzech cyfr i jednej litery,
    a pozostałe z dwóch lub trzech cyfr / (łamane) przez dwie lub trzy cyfry i na końcu litera.

    Parametry te zawsze oddzielone są od innych danych spacją z przodu i z tyłu.

    W każdej pozycji w kolumnie C zawsze występuje tylko jeden parametr w każdym rekordzie.
    Nie ma stałego miejsca, w którym będzie parametr.
  • Helpful post
    #6
    Maciej Gonet
    VBA, Excel specialist
    Proponuję użycie funkcji UDF:
    Code: vbscript
    Log in, to see the code
    Wywołanie:
    Code: text
    Log in, to see the code
    Funkcja zwraca dopasowany parametr lub pusty tekst jeśli brak dopasowania. Gdyby było więcej wyników, zwraca pierwszy z listy. Przyjąłem dopasowanie ścisłe, tzn. z rozróżnieniem małych i wielkich liter.

    W podanych przykładach w niektórych pozycjach brak dopasowania.

    W kolumnie A podobne rozwiązanie formułą.
    Code: text
    Log in, to see the code
    Sprawdź, które jest szybsze, bo tak "na oko" przy tej liczbie danych szybkość jest porównywalna.
  • #7
    naszamaja15
    Level 3  
    WIELKIE DZIĘKI !!!
    Tylko mi się wydawało, że potrafię używać funkcji zagnieżdżonych.

    Oba rozwiązania są sprawne i szybkość jest ta sama.
  • #8
    naszamaja15
    Level 3  
    WIELKIE DZIĘKI !!!
    Tylko mi się wydawało, że potrafię używać funkcji zagnieżdżonych.

    Oba rozwiązania są sprawne i szybkość jest ta sama.

    Dodano po 41 [minuty]:

    Dzięki pomocy Maciej Goneta, problem rozwiązany.