Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  45 46 47 48 49 50 51 52 53   další »

Nevím jak ostatní, já nikdy žádnou knížku neměl a většinu maker jsem ze začátku tvořil metodou pokusů a omylů a s pomocí internetu (teď už to není většinou, ale pořád to tak je :-) ). Je fakt, že dřív než makra jsem se jako samouk učil Visual Basic, který když zvládneš tak makra nebudou problém.

Ahoj,

chceme-li jedinečné hodnoty z hodnot ve sloupci pod sebou, tak lze použít rozšířený filtr, ale v tomto případě to vypadá, že je požadavek na jedinečné hodnoty z více sloupců (teda předpokládám, že ty barvy na řádku jsou každá v jiném sloupci), což už je trochu horší a tak jsem zkusil napsat makro viz. soubor v příloze. Místo pevně nastaveného rozsahu je tam výběr, tudíž makro vyhledá jedinečné hodnoty ve všech označených buňkách a tyto hodnoty pak zapíše pod sebe do listu 2, na který se pak přepne.

Snad to pomůže :-).
S pozdravem
M@

Dva příklady v příloze.

M@

Tak jsem si to zkusil nasimulovat a chodí to dobře, akorát jsem tam přidal podímnku pro ověření jestli je v buňce nějaká hodnota, pro případ, že by některé buńky ve výběru byly prázdné, tak aby to tam nesázelo "or or".
Pokud to v předchozím případě házelo na konci or, tak nejspíš proto, že poslední buňka výběru byla prázdná a tudíž výsledek před oříznutím měl na konci ne 1 or, ale 2 or. Ale to je jen má teorie :-)

Příkládám test soubor.
M@

Ahoj, můžu vidět ukázku v praxi - třeba na to přijdu, když si to budu moct zkusit.

M@

Ahoj, napadají mě jen 2 možnosti jak to obejít.
1) Uložit sám sebe a pak se zkopírovat do daného umístění, přičemž sám zůstane pořád otevřený. Problém je, že zdrojový soubor se bude přepisovat, což nevím jestli nežádoucí.

2) Před "Save as" si do proměnné uložit cestu sám k sobě. Provést uložit jako, otevřít zdrojový soubor z adresy z proměnné a nově uložený soubor zavřít.

No není to jen tak, funkce MAXIF neexistuje, ikdyž je fakt, že když existuje funkce SUMIF, že by mohli udělat i MAXIF :-).

Takže nezbývá než se spolehnout na makro.
Za předpokladu, že na listu 1 bude 150 záznamů, ve sloupci A bude datum, ve sloupci B hodnota a na listu 2 ve sloupci A jedinečné datum (získání jedinečných hodnot ve článku třídění dat, s tím že si do nějakého provizorního sloupce listu 1 dáte pouze datum ze sloupce A a na tomto provizorním sloupci provedete jedinečný výběr), v mém příkladě 50 jedinečných záznamů (smyčka lze udělat i tak aby jela řádek po řádku a nejen v předdefinovaném tozmezí).
Tak a pokud je toto splněno tak stačí spustit makro :-)

Dim datummax As Date
Dim max As Single
For i = 1 To 50
datummax = List2.Cells(i, 1) + 1
For i2 = 1 To 150
If List1.Cells(i2, 1) >= List2.Cells(i, 1) And List1.Cells(i2, 1) <= datummax Then If List1.Cells(i2, 2) > max Then max = List1.Cells(i2, 2)
Next
Cells(i, 2) = max
max = 0
Next

M@

Dobrý den,

zkusil bych Data -> Filtr -> Rošířený Filtr -> vybrat obast s datumy, vybrat volbu kopírovat jinam, nastavit buňku kam (jiný sloupec) a zaškrtnou možnost "Bez duplicitních záznamů". Toto vytvoří seznam jedinečných datumů, kam lze pomocí funkce SUMIF vysčítat hodnoty ke každému datu z původní tabulky.

S pozdravem
M@

A jedná se jen o číselné hodnoty?
Pokud ANO, tak bych na to šel matematicky :-)
=KDYŽ(SUMA(H1:L1)=0;"Něco";"Něco jiného")

M@

Podle popisu to vypadá na Office 2007, kde jsem při jeho prvním testu hledal asi půl hodiny, než jsem našel editor maker :-). Nakonec jsem zůstal u 2003, ale makro jako takové by se mělo v obou verzích chovat stejně - přeci jen je to "jen" práce s textovým řetězcem. Vysvětlovat co a jak by asi bylo na dlouho a tak přikládám příklad.

M@

Dobrý den,

ta tabulka se moc nezměnila od té doby co jsem ji viděl naposledy :-).

Nevím jestli jsem to úplně dobře pochopil, ale když do makra které už tam je vložíte:
If Cells(ActiveCell.Row, 10) = 1000 Then Cells(ActiveCell.Row + 1, 10) = Cells(ActiveCell.Row, 9) - Cells(ActiveCell.Row, 10)
tak by to snad mohlo splňovat požadované.

M@

Dobrý den,

možností bude více:
- Nejsnažší pro ty co makra nepoužívají je použití vzorce:
=DATUM(ZLEVA(A1;4);ČÁST(A1;5;2);ČÁST(A1;7;2))+ČAS(ČÁST(A1;9;2);ČÁST(A1;11;2);ČÁST(A1;13;2))
za předpokladu že textové vyjádření je v buňce A1. Tento vzorec pak lze např. dvojklikem v pravém dolním rohu buňky s již zapsaným vzorcem, roztáhnout pro všechny buňky s hodnotou ve sloupci A.
- Použití zápisu pro každou buňku ve sloupci B pomocí makra:

Public Sub exctract_data1()
Dim rd As Single
rd = 2
Do While Cells(rd, 1) <> ""
Cells(rd, 2).Formula = "=DATE(LEFT(A" & rd & ",4),MID(A" & rd & ",5,2),MID(A" & rd & ",7,2))+TIME(MID(A" & rd & ",9,2),MID(A" & rd & ",11,2),MID(A" & rd & ",13,2))"
Cells(rd, 2).NumberFormat = "dd/mm/yyyy \/ hh:mm:ss"
rd = rd + 1
Loop
End Sub

tento příklad začíná od druhého řádku a do sloupce B vkládá výše zmíněný vzorec. U tohoto příkladu bych doporučil použít na začátku makra Application.screenupdating = false a na konci to zase povolit - zrychlí to běh makra.

- vložení vzorce a nakopírování do zbývajících buňek (asi to bude rychlejší než předchozí :-) )

Public Sub exctract_data2()
Dim rd As Single
rd = 2
Cells(rd, 2).Formula = "=DATE(LEFT(A" & rd & ",4),MID(A" & rd & ",5,2),MID(A" & rd & ",7,2))+TIME(MID(A" & rd & ",9,2),MID(A" & rd & ",11,2),MID(A" & rd & ",13,2))"
Cells(rd, 2).NumberFormat = "dd/mm/yyyy \/ hh:mm:ss"

Do While Cells(rd, 1) <> ""
rd = rd + 1
Loop
Cells(2, 2).Copy
Range("B3", "B" & rd - 1).PasteSpecial xlPasteAll

End Sub


To co je napsáno vzorcem by šlo vyřešit i v makru, ale je to potřeba?

M@

Dobrý den,

způsobů bude asi více, možná by to šlo i nějakým vzorcem, ale osobně pro mě je rychlejší napsat si na to makro.

Následující kód začne prvním řádkem prvního sloupce a jede řádek po řádku dokud jsou v buňce hodnoty.
na každém řádku ověří je-li na začátku 0 a pokud ano, tak je hodnotu o jeden znak zleva ořízne. Toto ověření udělá pro každou buňku tolikrát kolik má daná buňka znaků. Ve skutečnosti pokud jsou max. 3 nuly na začátku, tak by stačilo toto provést 3x a ne na plný počet znaků, čímž by se makro zrychlilo.

Public Sub smaz_nuly()
Dim radek As Single
Dim sloupec As Single
radek = 1 'počáteční řádek
sloupec = 1 'prohledávaný sloupec

Do While Cells(radek, sloupec) <> ""
For i = 1 To Len(Cells(radek, sloupec))
If Left(Cells(radek, sloupec), 1) = "0" Then Cells(radek, sloupec) = Mid(Cells(radek, sloupec), 2)
Next
radek = radek + 1
Loop

End Sub


S pozdravem
M@

Tak jsem na to mrknul a myslím že by zde šla použít funkce:
=HYPERTEXTOVÝ.ODKAZ("odkaz";"text")
příklad jsem přidal i do přiloženého souboru.

M@

Ahoj, měl bych dotaz k článku Vytvořte si vlastní doplněk.
Když si tlačítko s makrem musím přiřadit ručně, tak v čem je vlastně přínos použití jako doplňku?
Přeci jen tlačítko s makrem můžu odkázat na jakýkoliv excelový soubor ať ho mám umístěný kdekoliv, aniž by to byl doplněk, tudíž ušetřím krok přidávání jako doplňku.
Toto narozdíl od doplňku běžně používám a tak se ptám jestli mi to jako doplněk přinese něco víc?

Díky
M@


Strana:  1 ... « předchozí  45 46 47 48 49 50 51 52 53   další »

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

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32

Čas od do

jarek1111 • 18.4. 8:31