Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 63

Takže to běží 30 minut, a co pak? Doběhne to?
P.

"S jakými sloupci na jakém listě pracuje..."
Najdi si klíčová slova "Cells". Před nimi máš název listu, hned na začátku makra pak máš přiřazení zkratek (např. Set MD = Worksheets("MD kmenová data")). Příkaz Cells má pak strukturu Cells(číslo řádku, sloupec). Pokud máš číslo řádku jako proměnnou, tak si musíš najít, čím je naplněna (např. For r_u = 2 To 10000 znamená, že čísla řádků jdou postupně v cyklu od 2 do 10000).

No, jak myslíš, že ti makro nedobíhá? Spadne? Jaká hláška vyskočí? Jaký řádek je žlutě? Případně vlož nějakou přílohu, na které by se to dalo otestovat...
P.

Dala by se k tomu využít například funkce SVYHLEDAT, která bude mít jako poslední parametr "PRAVDA" (tedy přibližná shoda). Stačí si pak udělat pouze jednoduchý číselník, ve kterém budou vždy horní hranice intervalů, ke kterým budou přiřazeny příslušné hodnoty.
Pro méně intervalů pak lze samozřejmě využít klasické funkce KDYŽ (vícenásobné).
P.

Podle mě jsi nepochopil ten kód ze zmiňovaného příspěvku ;-).
Nestudoval jsem to nějak do hloubky, ale nemáš tam třeba vůbec "pi.Caption" (ve svém kódu máš jenom jenom "pi"), což pak nedává smysl...
P.

Ano, lze.
P.

1.) Kontrolu, zda je v databázi, lze provést s využitím funkcí JE.CHYBHODN a SVYHLEDAT.
=KDYŽ(JE.CHYBHODN(SVYHLEDAT(A2;Databáze!A:A;1;NEPRAVDA));"Ne";"Ano")2.) Zapisování na list Výsledky pak lze udělat přes událost listu ve VBA.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim volny_radek As Long

If (Target.Address = "$A$2") And Range("B2").Value = "Ano" Then
volny_radek = Sheets("Výsledky").Range("A100000").End(xlUp).Row + 1
Sheets("Výsledky").Cells(volny_radek, 1).Value = Range("A2").Value
Sheets("Výsledky").Cells(volny_radek, 2).Value = Date
End If

End Sub
P.

Možností je více, tak pouze nasměruji.
1.) Jednorázově by šlo přes schránku Office. Postupně do ní vkládat oblasti, a následně využít možnosti "Vložit vše".
2.) Makrem. Strýček Google určitě nějaká nabídne, vlastní se mi tvořit nechce, když neznám přesná nastavení.
3.) Vzorcem. Mohly by se hodit funkce POSUN, INDEX, ŘÁDEK...
P.

Potřebujete zřejmě aktualizovat položky ve filtru, bez zachování historických hodnot.
Lze toho docílit takto:
1.) Kliknout do KT, karta Možnosti / Možnosti.
2.) Na kartě Data vybrat v položce "Počet zachovaných položek na pole" možnost "Žádné".
3.) Aktualizovat KT.
P.

Kontingenční tabulka si uchovává původní hodnoty, dokud není ručně aktualizována (kliknout do KT --> Možnosti/Aktualizovat).
Případně zkus filtrovat 2016 a uvidíš, co ti to vyhodí...
Případně nahraj excelovou přílohu.
P.

Lze to dělat buď přes funkci CONCATENATE, nebo můžeš využít ampersandy.
Žádná věda to vskutku není ;-).
P.

Př.:
=CONCATENATE(E1;G1;I1)
=E1&G1&I1

Pomůže "obalení" SVYHLEDAT funkcí IFERROR?
P.

Např.:
=IFERROR(SVYHLEDAT(A1;[Sešit1.xlsx]List1!$A:$B;2;NEPRAVDA);B1)

Zřejmě by to šlo řešit i přes VBA, ale šel bych na to možná z jiné strany. Využil bych té skutečnosti, že ne vždy lze sešit sdílet - například když obsahuje tabulky aplikace Excel nebo mapovaní XML. Já bych zkusil někam vložit tabulku aplikace Excel (Domů / Formátovat jako tabulku), podle mě nejjednodušší řešení, které dokonale zmate běžné uživatele ;-). Tabulka může mít klidně dvě buňky, může být ve skrytém řádku/sloupci, na skrytém listu apod. Běžný uživatel si s tím podle mě neporadí, a od sdílení sešitu jej to odradí.
P.

Viz příloha:

Například takto:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then
Target.Value = UCase(Left(Target.Value, 1)) & Right(Target.Value, Len(Target.Value) - 1)
End If

End Sub
P.

Vlož přílohu...
P.

Datum lze doplňovat automaticky událostí listu Worksheet_Change. Řešil bych to tak, že by mi tato událost při změně listu vložila nebo aktualizovala datum (v pomocném sloupci, třeba A - v kódu 1), záleží pak na tom, jak si to přesněji představuješ, viz ukázky kódu níže.
P.

Př. 1, datum se aktualizuje při jakékoliv změně v daném řádku:
Private Sub Worksheet_Change(ByVal Target As Range)

Cells(Target.Row, 1).Value = Date

End Sub

Př. 2, datum se aktualizuje pouze při první změně v řádku:
Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(Target.Row, 1).Value = "" Then
Cells(Target.Row, 1).Value = Date
End If

End Sub


Strana:  1 ... « předchozí  17 18 19 20 21 22 23 24 25   další » ... 63

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse