[Excel] Formuła do indeksowania danych


(oprych) #1

Witam

Mój problem pewnie dla większości wyda się błahy, ale nie znalazłem nigdzie rozwiązania.

Excel 2007

  1. Załóżmy, iż w komórkach A1, A2, A3 itd. mam dane tekstowe (np. nazwiska)

  2. Zakładam, dla siebie że nazwiska są numerowane (1., 2., 3. Itd.)

Jak teraz zrobić, żeby po wpisaniu w określonej komórce (np. G4) liczby odpowiadającej nazwisku (czyli 1 dla A1, 2 dla A2 itd.) w drugim arkuszu w określonej komórce pojawi się żądany tekst (w tym przypadku nazwisko)?

Strasznie ułatwiłoby mi to prowadzenie krzyżówek zapaśniczych.

Z góry dziękuje jeśli ktoś zechce poświęcić chwilkę temu mam nadzieję łatwemu problemowi :stuck_out_tongue:


(dark__jedi) #2

A nie lepiej skorzystać z funkcji sprawdzania poprawności (menu Dane>sprawdzanie poprawności).

  1. Tworzysz sobie mini tabelkę z jednej kolumny, tj nazwisk

  2. zaznaczasz konkretną komórkę gdzie chcesz mieć wybór, lub komórki

  3. menu > Dane>sprawdzanie poprawności - w kryteriach poprawności ustawiasz - lista

  4. w polu źródło zaznaczasz mini tabelkę z nazwiskami

  5. klikasz OK

od tej chwili w polu które formatowałeś pojawia ci się lista wyboru z nazwiskami. Kasujesz dane w banalny sposób bo klawiszem delete.

To samo możesz robić między arkuszami, albo tabelkę możesz umieścić gdzieś dalej w arkuszu i ukrywasz potem kolumny.


(oprych) #3

Właśnie nie bardzo.

Poniżej mały obrazek poglądowy o co mi chodzi :stuck_out_tongue:

tabelka.jpg

Czyli jeśli np. w kolumnie E2 wpisze 1, a w kolumnie E3 wpisze 3,

to chciałbym aby w jakiś innych określonych kolumnach np. F3, F4 pojawiło się odpowiednio Nowakowski Tadeusz i Kalinowski Piotr

Próbowałem eksperymentować z poniższą formułą:

=JEŻELI(E2=1;B2;"wolny los")

Ale jest ograniczenie do 8, czyli więcej niż 8 zawodników nie przypisze, a jedyne co osiągnę to :

=JEŻELI(E2=1;B2;JEŻELI(E2=2;B3;JEŻELI(E2=3;B4; JEŻELI(E2=4;B5; JEŻELI(E2=5;B6; JEŻELI(E2=6;B7; JEŻELI(E2=7;B8; JEŻELI(E2=8;B9; wolny los))))))))

Tylko jak w formule umieścić więcej stałych?

czyli że dwójka to B3, 3 to B4 itd. ?


(Airborn) #4

oprych , proszę poprawić tytuł tematu na konkretny, mówiący dokładniej o problemie. W przeciwnym wypadku temat zostanie usunięty.


(Utrivv) #5

Nie sądzę by to było możliwe ale weźmy uproszczenie.

Nazwiska wprowadzasz np. od wiersza 2 i nie numerujesz ich (zakładamy że numer jeden to wiersz 2)

otwierasz edytor makr (u mnie alt + f11) i piszesz:

sub minimakro()

dim row as long

dim st as long

row = 2 

while cells(row,"B").value <> ""

if cells(row,"E") <> "" then

st = cells(row,"E").value + 1


cells(row,"F") = cells(st,"B").value

end if

row = row + 1

wend


end sub

Teraz klikamy Widok - Pasek Narzędzi - Rysowanie

wybieramy np. elipse, rysujemy zgrabny przycisk, na nim prawyklik, przypisz makro (wybieramy nasze minimakro)

i klikamy na przycisk za każdym razem gdy chcemy krzyżować.


(oprych) #6

Cóż spróbuje w domu, ale raczej to nie będzie mi pasowało.

Kurcze jak pomyślałem o zrobieniu krzyżówek w excelu sądziłem, że odniesienie do innej komórki jest sprawą łatwą :stuck_out_tongue:

A wychodzi na to, że faktycznie tak jest, ale tylko do 8 kolumn :frowning: Tymczasem u mnie zdarza się i po 30 zawodników na kategorię


([alex]) #7

=INDEX(A1:A99;B1) - angielski excel

=INDEKS(A1:A99;B1) - polski excel

A1..A99 - nazwiska

B1 - numer


(oprych) #8

Dzięki właśnie o to chodziło :slight_smile:

A ja już kombinowałem z

=JEŻELI(E2=1;B2;JEŻELI(E2=2;B3;JEŻELI(E2=3;B4; JEŻELI(E2=4;B5; JEŻELI(E2=5;B6; JEŻELI(E2=6;B7; JEŻELI(E2=7;B8; JEŻELI(E2=8;B9; wolny los))))))))

bo w OO nie ma ograniczenia do 8, ale Twój sposób jest dużo przejrzystszy i wygodniejszy

Zaoszczędziłeś mi dużo czasu,, teraz tylko muszę wszystkie krzyżówki przepisać do Excela :stuck_out_tongue: