do 2003
Nástroje -> Zámek -> Zamknout sešit
od 2007
Karta Revize -> Zamknout sešit
Okna nechte odškrtnutá
Tuhle hlášku jsem ještě neviděl ;)
Nicméně, pokud jste si jistý, že je soubor v pořádku, můžete si zkusit pohrát s důvěryhodným umístěním. Jenže podle toho, že se soubor chová nějak divně to tak nevypadá, takže ho zkuste vytvořit znovu - paxi jistý budete ;)
Je pravda, že funkce SVYHLEDAT je určena přesně pro tento případ, jenže má několik omezení, kvůli kterým jsem ji téměř přestal používat
- prohledávaný sloupec musí být jako první
- argument sloupec se zadává číselnou konstantou, takže při změně zdrojové tabulky se vzorec neaktualizuje (lze sice nahradit pomocí fce SLOUPEC, ale je to zbytečná komplikace)
- je mi nesympatická ;)
Jak píše Opičák, pokud je hodnota argumentu TYP rovna PRAVDA, musí být seřazeny vzestupně (při NEPRAVDA nemusí, takže tohoto případu se to netýká) - seřazení ovšem platí i pro POZVYHLEDAT v případě argumentu SHODA a jeho hodnot 1 nebo -1)
Pokud si zapamatujete uvedenou konstrukci, budete mít obecnější řešení pro více případů prohledávání.
SVYHLEDAT je tedy správně, ale i tehdy musíte použít IFERROR.
Do B1 dejte vzorec
=IFERROR(INDEX(Sheet2!$B:$B;POZVYHLEDAT(I1;Sheet2!$A:$A;0));"nenalezeno")
a zkopírujte
@GeorgeK
Pokud vám nevadí, že je soubor zkratky otevřen - z nějakého příspěvku jsem pochopil, že ano. V každém případě to takto bude fungovat rychleji ;)
Nicméně mi přijde naprosto zbytečný cyklus - který Palooo tak rád používá ;))
Čímž pádem je mé řešení rychlejší - ale vaše volba. Hlavně, že to funguje ;)
A ještě drobná oprava, která mne napadla až dnes
Můj kód totiž mění nastavení Dialogu nahradit a to mi vadí (kód po proběhnutí by měl zanechat excel v takovém stavu, v jakém byl na jeho začátku - pokud možno)
Takže v tomto případě by šlo využít tento trik
místo
.Replace What:="#N/A", Replacement:="nenalezeno", LookAt:=xlWhole
toto
.SpecialCells(xlCellTypeConstants, xlErrors).Value = "nenalezeno"
@AL
Já jsem ten kód od Palooo nezkoumal, takže nevím jak to má udělané, jen když jsem viděl, že se baví o doplňcích, taxem musel zareagovat, protože mi to přišlo zbytečné.
Opravdu to vypadá na referenci, i když já ji ve svém PC také nevidím (takže zřejmě proto ta instalace)
@GeorgeK
Když už se tu na to narazilo: Pro instalaci doplňků do excelu dle mého názoru není třeba oprávnění - je možné, že nemáte oprávnění na složku, do které chce excel doplněk instalovat (u mne to tak je, ale co chcete po lidech, kteří instalují počítače ve firmě) - dá se to obejít tak, že si ho uložíte někam jinam a načítat ho budete z tohoto místa. To jen tak na okraj
Musím se kolegů zastat
My vážně nevíme, jak to vypadá, jak jsou tabulky velké atd.
Nemůžete po nás chtít, abychom si ty soubory ještě vytvářeli. Kdybyste se zaregistroval a dal sem tu přílohu (všechno je zadarmo), už byste to měl hotové
Nahrajte makro - stačí tak 3, 4 kroky a dejte ho sem - on to už pak někdo upraví na těch 400 ;)
Nechtěl jsem se do toho plést, ale ve chvíli, kdy tady vidím něco o doplňcích, tak musím.
ŠMANKOTE
Cestu jsem nastínil výše, stačí dát to do kódu
Sub Makro1()
Dim sSourcePath As String, sSourceFileSheet As String, sSource As String
sSourcePath = ThisWorkbook.Path
sSourceFileSheet = "[zkratky.xls]seznam prof.org."
sSource = sSourcePath & "\" & sSourceFileSheet
Dim sFormula As String
sFormula = "=INDEX('" & sSource & "'!C2,MATCH(RC[-3],'" & sSource & "'!C1" & ",0))"
With Range("D2:D27")
.FormulaR1C1 = sFormula
.Value = .Value
.Replace What:="#N/A", Replacement:="nenalezeno", LookAt:=xlWhole
Range("A2:A27").Value = .Value
.ClearContents
End With 'Range("D2:D27")
End Sub
kód v této podobě funguje pro soubory umístěné ve stejné složce - je možno upravit
soubor zkratky není třeba otevírat
edit: název proměnných v definici Dim
Řeknu to takto:
Přes COUNTIFS to nejde.
A ještě doplním, že to určitě půjde přes vzorce, ale studium toho souboru mi zabralo skoro hodinu a ještě jsem je nezačal dělat (je to děsně provázané). Kdybych ten soubor vytvářel od začátku, tak bych to tam asi měl, teď mi nezbývá než poradit - napište (nahrajte) si makro
I na tuto otázku bych mohl odpovědět takto
ano, máme.
Odpovídám takto proto, že mi tu chybí příloha.
Pokud to chcete jen teoreticky, tak:
Na jednom listu seznam komponent (každý jednou) s počtem kusů
Na druhem listu seznam výrobků se seznamem komponent, kde se vyhledá počet kusů z listu se seznamem komponent
Je to tak, jak píšete, ale jestli je to špatně, kdo ví. Pravděpodobně ano, protože výsledek by měl být shodný při Souhrnu nad i pod daty. Souhrn pod daty funguje správně včetně stanovení úrovní - u souhrnu nad se jsou ovšem součty za jméno postaveny nad součty za činnost, protože jim excel přiřadí vyšší úroveň. Proč tomu tak je, se asi musíte zeptat programátorů, možná jste objevil chybku.
Nicméně asi tuším, co by odpověděli, kdybyste se jich na to zeptal:
Použijte kontingenční tabulku - ušetří vám práci (nemusíte seřazovat) a tak i čas a přesně k tomuto slouží.
ano, je to možné
Nevadí
Když(je.chybhodn(VZOREC);"nenalezeno";VZOREC)
VZOREC je to, co je za IFERROR - mělo by fungovat, vyzkoušet ale nemůžu
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.