Nejste přihlášen/a.

Přihlásit se do poradny

 

MS Excel výběr hodnot

Od: tronmkiheda* odpovědí: 4 změna:

Dobrý den!

Chtěl bych Vás požádat o pomoc s MS Excelem.

Mám tento problém: v buňce (třeba A1) mám rozbalovací pole, které může nabývat cca 30 různých hodnot. Chtěl bych, aby, když v tomto rozbalovacím poli vyberu určitou hodnotu, tak se do dalších buněk tohoto řadku automaticky vepsaly další údaje právě podle hodnoty vybrané v buňce A1.

Příklad: buňka A1 může nabývat hodnoty: "Novák", "Richter", "Krejčí".

Chci, aby když vyberu hodnotu "Novák", tak se do buňky A2 automaticky vepsala jeho adresa, do buňky A3 jeho telefon, A4 plat atd. Tabulka s těmito údaji je ideálně umístěna na jiném listě téhož xls souboru, ale může být i na tomtéž.

Předem moc díky za radu.

P.S.: opravdu to musí být v Excelu, databázové programy mé kolegyně neovládají (a já tak moc ne :))

Martin H.

 

 

4 odpovědi na otázku
Řazeno dle hodnocení

 

 

dzordz*
hodnocení

2x

Lepší řešení samozřejmě existuje. Nevím, jak moc zvládáte excel, tak vás zkusím nejdřív jen trochu nakopnout a kdyby nic, hodil bych někam ukázkový výtvor s miniaturní tabulkou na stejném principu.

Takže, budete potřebovat vytvořit "někde bokem"ten seznam všech hodnot a údajů, které se budou používat, tedy něco jako vaši miniaturní databázi. Výsledek se bude psát po řádcích, bude tedy pro vás lepší i tabulku udělat po řádcích. Nutně potřebujete mít jeden klíčový prvek (sloužící jako primary key v SQL), který bude unikátní a podle kterého půjde záznam jednoznačně identifikovat. (kdyby takový prvek neexistoval, půjde to taky, ale složitěji) Dejme tomu, že jím bude příjmení těch osob. Začnete tedy svou tabulku tím, že do prvního sloupečku vypíšete všechna příjmení a ke každému z nich vyplníte do řádku další údaje, jméno, adresu, telefon, nejlépe v tom pořadí, ve kterém je budete chtít vypisovat.

Pak si uděláte ten svůj řádek pro vypsání výsledku, buňky si nadepíšete pořadím záznamu v řádku (tedy jméno-2, adresa-3), první z nich pak bude volně přístupná, buď přes ten rozbalovací klikací seznam, nebo prostě tam půjde přímo psát. V dalších buňkách pak použijete indexaci (k tomu dále) do připravené databáze tím stylem, že vyhledáte odpovídající klíč (příjmení) a pak z odpovídajícího sloupečku zkopírujete údaj. S velkým počtem záznamů roste doba vyhledání a přepočtu stráky, může být výhodnější hledat jen jednou, číslo řádku si uložit a pak pro další záznamy použít offset.

Vzorce pro indexaci budete mít například =INDEX($E$9:$H$14; POZVYHLEDAT($B$3;$E$9:$E$14;0); C$2).

Když to rozeberu, tak: Index vrací záznam z oblasti buněk (modrá, má všude dolary, aby se při kopírování vzorce neposouvala; odkazuje na oblast s vaší databází), vybírá údaj z určitého řádku (fialová) a sloupce (zelená). Sloupec je jasný, máte sloupečky výpisu ve stejném pořadí jako v databázi, při kopírování doprava se sloupec posouvá, C->D->E a kopíruje další údaje, řádek zůstává. Ukazuje to prostě na ty čísla v nadpisu, která jsou čísly sloupců.

U řádku to je zajímavější - nevíte, který řádek chcete, musíte ho nejdříve najít. POZVYHLEDAT předáte jako parametr hledaný řetězec (růžová, tedy příjmení; dolary u obou, budete hledat pořád podle stejného klíče), dále oblast příjmení v databázi (opět s dolary) a třetí, volitelný parametr, dáte nulu (tzn že se bude hledat přesná shoda, case-insensitive, při nenalezení vrátí N/A).

No a nakonec všechny ty pomocné údaje uzamknete a skryjete. Buňky zobrazující výsledky můžete taky uzamknout, nechat přístupnou jen tu hlavní, pro vyplnění příjmení.

doplněno 22.10.11 16:49:

Ten filtr by samozřejmě šel taky, ale má svá určitá, nepříjemná omezení ..

Když už jsem se s tím teda dělal .. uloz.to/...*palec*

tronmkiheda*
hodnocení

Moc moc a ještě jednou moc děkuji.

Je to prostě skvělé, to je přesně to, co jsem chtěl. Upřímně jsem očekávval, že mi někdo řekne, že existuje přímo nějaká funkce, která něco takového dělá, ale zdá se, že ne.

Takže ještě jednou moc díky a krásny den.

 

hankauk*
hodnocení

0x

Tohle si, myslím, bude dost složité. Pokud do první buňky zadáte nějakou hodnotu, podle které se do těch dalších bude vypisovat další údaj, musí mít taková buňka podmínku. "Když je buňka A1 Novák, tak "něco", jinak nic. KDyž je buňka A1 Richter, tak "něco", jinak nic. atd." Takhle byste de facto do každé buňky musel vypsat všechny podmínky, tzn. pro všechna jména. Jednodušší by bylo, kdyby podmínka v buňce byla omezená pouze na jednu hodnotu. Např... pro buňku A2 "Když je A1 Novák, tak "něco", jinak nic; pro buňku A3 "Když je A1 Novák, tak "něco", jinak nic atd...

Ale třeba vám někdo poradí lépe.. mě lepší řešení nenapadá. :(

 

danten*
hodnocení

0x
Jednoduché řešení je automatický filtr.
do prvního řádku (a) napiš nad každý sloupec (a1..) nadpis pro pole, např.
A1 - "jméno , příjmení"
A2 - "ulice"
A3 - "č. popisné"
Pod každé z těchto polí zadej požadované data.
Jakmile budeš mít tabulku vyplněnou, označ první řádek a klepni na pravé myšítko. ze seznamu vyber položku "filtr"
nyní budeš mít požadovaný výpis.
Pokud chceš mít zobrazený výběr v jiném listě, otevři nový list a kldpni do pole a1, poté napiš do řádku kodů = a klepni na záložku listu se sezna
Toť vše.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]