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.

[Excel] Wyszukanie w kolumnie i zaznaczenie komórki

młody-elektronik 01 Mar 2017 01:40 2076 40
  • #1 01 Mar 2017 01:40
    młody-elektronik
    Poziom 11  

    Cześć,
    Potrzebuję rozwiązania, jak w temacie.
    Szukam w 1 kolumnie. Operacja powinna zakończyć się mrugającym kursorem w komórce, obok tej 1 konkretnej znalezionej z daną inf.

    Excel 2010.

    Jeśli coś potrzeba z mojej strony, proszę pisać.

    0 29
  • #2 03 Mar 2017 09:56
    marek003
    Poziom 40  

    Zaznacz całą kolumnę i wciśnij CTRL+F, wpisz szukaną i OK.

    0
  • #3 03 Mar 2017 15:31
    młody-elektronik
    Poziom 11  

    Przepraszam ale ucięło mi wpis że to ma być w VBA

    Dodano po 4 [godziny] 59 [minuty]:

    Mała zmiana wyszukiwanie już posiadam
    brakuje mi już tylko kawałka kodu

    zaznaczenie wyszukanej komórki
    przesunięcie o 1 w prawo
    skopiowanie tej komórki do pamięci
    kolejne przesunięcie w prawo
    zaznaczenie tej komórki

    Za wszelką pomoc dziękuję

    0
  • #4 03 Mar 2017 16:08
    marek003
    Poziom 40  

    Dziełasz na "zwykłym" adresowaniu czy na FormulaR1C1
    Przy "zwykłym"
    kopiowanie:
    Cells(1,2)=Cells(1,1)
    Zaznaczenie
    cells(1,3).select

    Poza tym excel ma coś takiego jak "zarejestruj makro".
    więc włącz ten zapis, zrób co trzeba, zatrzymaj zapis i zobacz jaki kod powstał.

    0
  • #5 03 Mar 2017 17:24
    młody-elektronik
    Poziom 11  

    niestety nie wiem jakie adresowanie kompletnie się nie znam działam metodą prób i błędów no i podpieram się domysłami :)

    Owszem to co podałeś zaznacza komórkę ale nie zadziała przy tym co mam
    jak zmienić zapis aby pierwsze zaznaczenie trafiało 100% w odpowiednią komórkę ? tzn nie mają one stałych komórek w kolumnie

    Pozycje wierszy zmieniają się stąd część odpowiadająca za wiersze powinna zmieniać się automatycznie
    Cells(auto,2)= tam gdzie auto nie wiem jak to zrobić
    jak zrobić aby excel wiedział w jakim wierszu jest wyszukane hasło
    wyszukiwanie działa mi bdb ale jak to w Cells zapisać

    Cells(1,2)=Cells(1,1) może się mylę ale czy to nie kopiuje komórki z 1 kolumny do 2 ? miało kopiować się do pamięci
    zamierzam zawartość wkleić poprzez CTRL+V

    To wyszło z makra zarejestrowanego
    Range("a55").Select
    Selection.Copy
    Range("b55").Select

    nie znam waszego języka ale przy dobrych chęciach zapewne się dogadamy :)

    0
  • #6 06 Mar 2017 10:10
    marek003
    Poziom 40  

    :) Czyta ale hobbistycznie :)
    Łatwiej się pracuje/pomaga na przykładowych załącznikach.

    młody-elektronik napisał:
    wyszukiwanie działa mi bdb

    A możesz przynajmniej wkleić kod procedury którą używasz do wyszukiwania. Łatwiej się będzie zorientować o co chodzi i jak są ułożone dane w excelu.
    Innymi słowy jeżeli to co masz ci działa i jesteś zadowolony więc należy "pobrać" wyniki tej procedury do kolejnych zdarzeń. Niestety nie wiem z jakiej procedury korzystasz więc załącz ją i dalej będziemy pracować na danych a nie czysto teoretycznie.

    Na marginesie kopiowanie "do pamięci" to np. cells(1,2).copy Ale jeżeli później masz to gdzieś wkleić to dlaczego nie może zrobić to makro - no chyba że jest to inna aplikacja.

    0
  • Pomocny post
    #8 06 Mar 2017 13:04
    marek003
    Poziom 40  

    Powiem ci że twoje rozwiązanie ... owszem :) ale trochę na około.

    Nie wiem czy textbox i ten filtr jest ci potrzebny .

    Poniżej rozwiązanie bez tego.
    Znajduje daną , kopiuje ją i ustawia się w okienku obok.

    Ps. Jak chcesz załączyć plik z makrem to go spakuj zipem/raraem

    Dodane po chwili
    -----------------------------------
    Podmieniłem załącznik 13:17

    Zauważ że funkcja "find" znajduje pierwszą daną pasującą.
    Przetestuj z literą d - czy tak ma być?

    0
  • #9 06 Mar 2017 13:51
    młody-elektronik
    Poziom 11  

    tak takie rozwiązanie jest mi potrzebne
    dziękuję za przykład zobaczę co z czym się je i dam znać

    Dodano po 32 [minuty]:

    bardzo dziękuję działa jak powinno :)

    to może jeszcze ...
    jak zrobić aby po wejściu do tego arkusza mrugał kursor w polu tekstowym ?
    Jak zrobić aby w autofilter było dokładne dopasowanie ? a nie po znakach zawierających się w szukanym

    0
  • #10 06 Mar 2017 15:33
    marek003
    Poziom 40  

    młody-elektronik napisał:
    jak zrobić aby po wejściu do tego arkusza mrugał kursor w polu tekstowym ?

    Z tym kursorem to muszę trochę doczytać :)
    młody-elektronik napisał:
    Jak zrobić aby w autofilter było dokładne dopasowanie ? a nie po znakach zawierających się w szukanym

    Sprawdź pod twój przykład w załączeniu.

    Dodane po chwili

    -----------------------------------
    Ustawić kursor w textboksie można za pomocą:
    TextBox1.Activate
    W załączeniu przykład (kod w This_workboks/Ten_skoroszyt a nie w kodzie arkusza)

    0
  • #11 21 Mar 2017 14:14
    młody-elektronik
    Poziom 11  

    wracam po małej przerwie :) z kolejnymi pytaniami

    do poprzedniego:
    jakby wyglądał kod ten co wyżej bez powiadamiania o błędzie (to niestety przeszkadza) z czyszczeniem pola tekstowego (po wstawieniu przeze mnie czyszczenia niestety całość się zapętla i wychodzi zupełnie coś innego niż powinno)

    nowe:
    dane w kilku kolumnach
    da się zrobić aby filtr działał na kilku kolumnach jednocześnie ?
    nadal 1 przycisk 1 pole tekstowe szukanie w kilku kolumnach i gdzie co się znajduje to pokazuje wszystkie

    0
  • #12 21 Mar 2017 15:49
    marek003
    Poziom 40  

    młody-elektronik napisał:
    jakby wyglądał kod ten co wyżej bez powiadamiania o błędzie (to niestety przeszkadza) z czyszczeniem pola tekstowego (po wstawieniu przeze mnie czyszczenia niestety całość się zapętla i wychodzi zupełnie coś innego niż powinno)

    Nie do końca wiem o jaki komunikat ci chodzi. Czy o ten: "Brak danej w zbiorze".
    Jeżeli tak to wykasuj linię
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Lub zmień cały warunek if

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Na

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Tylko wykasuj niepotrzebny ostatni wiersz pod końcowym End If
    aa = WorksheetFunction.Match(Target(1), Range("A10:A1000"), 0)

    Nie wiem skąd się przypałętała ta linia.


    młody-elektronik napisał:
    dane w kilku kolumnach
    da się zrobić aby filtr działał na kilku kolumnach jednocześnie ?
    nadal 1 przycisk 1 pole tekstowe szukanie w kilku kolumnach i gdzie co się znajduje to pokazuje wszystkie

    Nie wiem czy do końca rozumiesz działanie filtru.
    Może być więcej kolumn z podobnymi danymi, tylko że jeżeli w jednej kolumnie ma zadziałać filtr a potem "przechodzisz" do drugiej kolumny i włączasz kolejny filtr to on nie "zezwoli" pierwszemu filtrowi na odsłonięcie czegoś co on już wyfiltrował.
    Innymi sowy jeżeli ta sama dana będzie w tym samym wierszu w pierwszej i w drugiej kolumnie wtedy będzie to widoczne w innym przypadku nie.


    W załączeniu masz przykład z dwoma filtrami.
    Zanim wypróbujesz zobacz jak są dane ułożone i a w szczególności dana4 i pomyśl dlaczego filtry działają jak najbardziej poprawnie.

    0
  • #13 02 Cze 2017 12:08
    młody-elektronik
    Poziom 11  

    to znowu ja :)
    bardzo ułatwia mi życie rozwiązanie które podałeś
    może i tym razem podpowiesz

    mam dane powiedzmy ze to kwadrat jak w tabliczce mnożenia każda komórka powiązana z innymi
    wybieram lub wpisuje w komórkę lub w pole tekstowe (jeszcze nie wiem które rozwiązanie będzie lepsze) wartość x i y
    po zatwierdzeniu przenosi mnie do punktu przecięcia x i y

    niestety przy wielkości np 200 x 200 nie zmieści się wszystko na ekranie stąd taki pomysł
    lepiej coś takiego zrobić funkcjami czy vba ?

    0
  • #14 02 Cze 2017 21:01
    lanzul
    Poziom 26  

    młody-elektronik napisał:
    ... :) ... wybieram lub wpisuje w komórkę lub w pole tekstowe ... wartość x i y ... po zatwierdzeniu przenosi mnie do punktu przecięcia x i y ...

    ... :) ... a tak z ciekawości się spytam ... kolega może buduje portal do teleportacji (?) ... :) ...
    Telepor...zip Download (8.05 kB)Punkty: 0.5 dla użytkownika

    0
  • #16 04 Cze 2017 01:40
    młody-elektronik
    Poziom 11  

    dziękuję za szybki odzew
    vba działa tak jak powinno ale po przeniesieniu do właściwego pliku i zmianie zakresów przestaje pokazywać miejsce docelowe jeszcze nie wiem o co chodzi

    wersja bez vba działa również i z dużymi zakresami
    fajnie pomyślane bo po przejściu w miejsce docelowe nie znika miejsce wpisywania
    ta wersja bardziej mi przypadła :)

    jednakże przy częstych zmianach w tym arkuszu i wpisywania za każdym razem 2 pozycji które trzeba odszukać na liście będzie dość uciążliwe

    oszczędność czasu i klikania da coś takiego klik w nazwę 1 wypełnia się komórka gdzie trzeba wpisać nr wiersza -> dalej klik w nazwę 2 wypełnia się komórka gdzie trzeba wpisać nr kolumny -> po kliknięciu nazwy 2 następuję auto kliknięcie w odnośnik "idź"

    mam już rozwiązanie do klikania ale uzupełnia się pole tekstowe a nie komórka
    mogę prosić o jakieś podpowiedzi w tym temacie ?

    0
  • #18 04 Cze 2017 14:38
    lanzul
    Poziom 26  

    młody-elektronik napisał:
    ... vba działa tak jak powinno ale po przeniesieniu do właściwego pliku i zmianie zakresów przestaje pokazywać miejsce docelowe jeszcze nie wiem o co chodzi ...

    ... :) ... warunki graniczne ... :) ... jak się je zmieni, to będzie działać dla innych ... :) ... to był tylko 'przykład', jak ten poniżej, dla całego arkusza w zakresie komórek: 65536 wierszy i 256 kolumn ... :) ... :
    Teleportu..01.zip Download (10.96 kB)Punkty: 1 dla użytkownika

    W tym przykładzie makro uruchamiane jest poprzez 'dwuklik' na dowolnej komórce arkusza nr 1.
    Sposób uruchomienia można zresztą określić w dość szerokich granicach, zarówno z arkusza, jak i z formatki formularza 'UserForm' ...

    0
  • #19 14 Cze 2017 15:57
    młody-elektronik
    Poziom 11  

    oba przykłady bardzo fajne
    chciałbym jednak połączyć je odchudzić do niezbędnego minimum i dodać coś od siebie
    może tak przyjmijmy ze:
    - po pierwszym kliknięciu myszką w komórkę z przedziału x:y skopiuje jej wartość w miejsce gdzie była wpisywana wartość dla kolumny
    - drugie kliknięcie myszką w komórkę z przedziału x:y skopiuje jej wartość w miejsce gdzie była wpisywana wartość dla wiersza
    po tych 2 kliknięciach powinno przenieść w szukane miejsce krótko szybko i bez wpisywania :)

    a może lepsze rozwiązanie to szukanie po nazwach tylko z dokładnym odwzorowaniem gdyż częściowo mogą być do siebie podobne

    czekam z niecierpliwością na podpowiedzi :)
    w międzyczasie może coś ciekawego znajdę na goo ...

    0
  • #20 15 Cze 2017 02:16
    lanzul
    Poziom 26  

    młody-elektronik napisał:
    ... przyjmijmy ze:
    1) - po pierwszym kliknięciu myszką w komórkę z przedziału x:y skopiuje jej wartość w miejsce gdzie była wpisywana wartość dla kolumny
    2) - drugie kliknięcie myszką w komórkę z przedziału x:y skopiuje jej wartość w miejsce gdzie była wpisywana wartość dla wiersza
    po tych 2 kliknięciach powinno przenieść w szukane miejsce krótko szybko i bez wpisywania ...

    Ad 1) "Po pierwszym" skopiuje wartość w miejsce określone wartością koordynaty kolumny ... :) ... A do którego wiersza (?) skoro ten ma być "pobierany" dopiero po drugim kliknięciu (?) ... :) ...
    Ad 2) W tym przypadku mamy już zarówno koordynatę wiersza jak i kolumny, i nie ma "dylemata dylematycznego" ... :) ...

    "Znaczy sje": koordynaty wiersza i kolumny muszą być pobierane za każdym razem, tylko za pierwszym kopiowanie ma następować do wiersza "w" i kolumny "k", a za drugim razem do wiersza "w" i kolumny "k-1" arkusza (?) ... w rachubę wchodzi cały zakres arkusza, czy tylko jakiś kolejny wycinek (?) ... albo niech kolega uściśli to przykładem

    0
  • #21 15 Cze 2017 11:04
    młody-elektronik
    Poziom 11  

    no cześć :)
    to skąd ma pobierać to raczej będzie niezmienne czyli z 10 kolumn i ok 20 wierszy
    w sumie już mi to działa tylko brakuje tego "dwukliku" zamiast pisania i wyskakujących okienek
    szukam w internecie podobnych rozwiązań ale coś nie widzę może złe hasła wpisuję
    albo to takie mało spotykane

    chętnie wykorzystałbym te paski pokazujące miejsce przecięcia + rozwiązanie kolegi JRV z hiperłączem byle by ten "dwuklik" działał jeżeli to możliwe i będzie pełen sukces

    0
  • #22 15 Cze 2017 11:17
    JRV
    Specjalista - VBA, Excel

    młody-elektronik napisał:
    max ilość kolumn i ok 50 wierszy

    wartosci w przedziale x:y - to jest nastepnie numery wierszy i kolumn?
    To jako gra? Kliknij zawsze, aby dwa razy?

    0
  • #23 15 Cze 2017 11:33
    młody-elektronik
    Poziom 11  

    taki mały przykładzik

    wydaje mi się że przyjęcie z góry 2x klik zawsze będzie wygodniejsze
    w sumie kolumna D z liczbami nie byłaby potrzebna gdyby można było klikać na nazwy jak w kolumnie E i szukanie odbywało by się po nazwach
    ale nie wiem czy to by nie skomplikowało sprawy

    0
  • #25 15 Cze 2017 13:01
    młody-elektronik
    Poziom 11  

    o taki "dwuklik" mi chodziło
    jeszcze aby łapało co 2 kolumnę niestety nazwy są potrzebne muszę wiedzieć co naciskam :)
    tam będą inne nazwy

    od razu zapytam czy da radę zablokować górną cześć od 1-10 wiersza aby po odszukaniu gdzieś dalej w prawo ta część nie chowała się

    0
  • #27 15 Cze 2017 13:33
    młody-elektronik
    Poziom 11  

    myślałem o tym ale tych danych mogę mieć za dużo i nie zmieszczą mi się w kolumnach

    w ostateczności będę naciskać "home"

    0
  • #28 15 Cze 2017 13:40
    JRV
    Specjalista - VBA, Excel

    opcje1. Wprowadz jeszcze zmienne x20, x50, x100...
    Nie wiem co sie bedzie dzialac w tych komorkach(dane),
    wariant - "zamrozic" tylko kolumny po lewej

    młody-elektronik napisał:
    danych mogę mieć za dużo

    ile okolo?

    0
  • #29 15 Cze 2017 14:19
    młody-elektronik
    Poziom 11  

    dane1 do daneN to będą tylko nazwy ok 250 wiec nie dam rady zmieścić ich z lewej strony tak aby je wszystkie widzieć i jeszcze aby z prawej strony zmieściły się w osobnych kolumnach

    0