Řekl bych, že tvořit makro je zbytečné. Vystačíš si se dvěma funkcemi, které Excel nabízí. ID, v tomto případě sériové číslo, vlož jako první sloupec a využij funkce SVYHLEDAT. Pokud nechceš zobrazovat případnou hlášku "#NENÍ_K_DISPOZICI", tak to ještě obal do funkce IFERROR.
P.
Ilustrační ukázka:
=IFERROR(SVYHLEDAT(List2!$A2;List1!$E$1:$H$21;2;NEPRAVDA);"---")EDIT: Excel 2003 ještě nezná IFERROR, tak si případně pomoz s KDYŽ:
=KDYŽ(JE.NEDEF(SVYHLEDAT(List2!$A2;List1!$E$1:$H$21;2;NEPRAVDA))=PRAVDA;"---";SVYHLEDAT(List2!$A2;List1!$E$1:$H$21;2;NEPRAVDA))
Napadly mě tři možnosti.
1.) Každý list lze zvlášť uzamknout:
Revize/"Uzamknout list"
2.) Kód VBA, při aktivaci jiného listu automaticky přesměrovat uživatele zpět na požadovaný list. Do "jiného" listu tedy vložit kód:
Private Sub Worksheet_Activate()
Sheets("List1").Activate
End Sub3.) Pokud uživatel nepotřebuje dané listy, tak je můžeš skrýt. Buď ručně nebo kódem. V nastavení v editoru VBA lze nastavit i tzv. "velmi skrytý" list, tudíž o něm běžný uživatel nebude vůbec vědět. Jedná se o parametr Visible:
Sheets("List2").Visible = 2P.
Aha, ty ale v tom druhém vzorci voláš funkci DEN, která ti vrátí den v měsíci, tedy číslo od 1 do 31, což pak nelze převádět na datum. Proto ta "chyba". Pokud chceš získat stejný výsledek, jaký ti vrátí EOMONTH, tak pouze umaž funkci DEN.
P.
Vzorec:
=DATUM(ROK(B3);MĚSÍC(B3)+1;1)-1
Vlož přílohu, mě to funguje správně.
P.
Nevím, za jakým účelem to tvoříš, ale nebylo by v tomto případě lepší mít všechna data v jednom sešitu Excelu? S tím, že by se graf mohl měnit dle nějakého nastavení, např. podle hodnoty buňky...
P.
Pokud jsi to tam kopíroval ty sám, a máš zdrojový soubor, tak můžeš využít možnosti importu, kterou Excel nabízí.
Např. Data/"Z textu"...
P.
V příkladě názorně ukazuji nastavení levého a pravého okraje v aktivním listu. Ostatní okraje si případně logicky domyslíš ;-)...
P.
Př.:
With ActiveSheet.PageSetup
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(1)
End With
Vyzkoušej záznamník maker a kód si případně následně uprav.
P.
Jelikož tam rozsah definuješ numericky, tak musíš využít "Range".
P.
Např. takto:
Range(Columns(Sloupec), Columns(Sloupec + 1)).Groupnebo
Range(Cells(, Sloupec), Cells(, Sloupec + 1)).Group
Je k tomu třeba využít VBA.
Konkrétně jde o událost "Workbook_Open", která se umístí do "ThisWorkbook".
P.
Př.:
Private Sub Workbook_Open()
Sheets("List1").Range("A1").Value = 0
Sheets("List2").Range("A1").Value = 0
End Sub
Nedává mi to smysl ;-). Zkus napsat k čemu to je.
V tom tvém případě sousedí i 151 a 95, a pak by byl rozdíl 56...
P.
Nejsem si jistý, co přesně chceš, protože jsi to popsal matematicky i logicky dosti nepřesně. Vypadá to ale, že potřebuješ určit lokální extrémy funkce. V tom případě stačí vytvořit pomocný sloupec a využít funkci KDYŽ pro porovnání dvou "sousedních" buněk. Lokální maximum je typické tím, že je větší než předchůdce a následovník, lokální minimum je oproti tomu menší než předchůdce a následovník. Přidej k tomu logické spojky A a NEBO, a máš hotovo.
P.
Viz příloha:
Jedna z nejjednodušších možností je vložení pomocného sloupce, kde bude datum na každém řádku. Udělej si první 4 buňky, a pak již můžeš kopírovat vzorce... Sloupec můžeš následně skrýt.
P.
P.S.
Přečti si pravidla fóra, zda děláš vše správně ;-). Pro vkládání přílohy musíš být přihlášen a příloha musí mít požadovaný formát a velikost...
Ano,
pokud nechceš odkazovat vzorcem, tak s využitím makra.
P.
Mě se to otevírá do výchozího prohlížeče, takže jednou možností je nastavit tento jinak ;-)...
P.
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.