Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  33 34 35 36 37 38 39 40 41   další » ... 289

Tak toto by som urobil inak. Predpokladám, že v reále namiesto Buňka 1, Buňka 2, ... sú tam nejaké texty. Tak by som to urobil jedným jediným makrom, ktoré by si našlo v 12. riadku správnu pozíciu podľa nápisu na stlačenom tlačítku. Toto uvádzam len jednu z možností. Kľudne sa to dá urobiť na dynamický počet tlačítok, dynamický počet stĺpcov a pod.

Ďalších niekoľko príkladov. To sa dá nakombinovať, rôzne možnosti, presne podľa toho čo makrá robia (nevieme), koľko je tlačítok (nevieme), ako sú rozmiestnené (nevieme), stály/dynamický počet (nevieme), ich názvy (nevieme), podmienený formát, zápis pod tlačítko, zápis do spoločnej bunky, počítanie na základe riadku, ...

Príklad pri každom uložení súboru.

Našiel som si nejaké staršie verzie, no nejako sa mi to zlieva a neviem určiť čo ste zmenil oproti verziám z 14.9.,3x 15.9., 3x 16.9., 19.9. Ale ten posledný ste asi Vy nevidel, tak som sa to pokúšal prerobiť na Tabuľku namiesto tabuľky. Ale väčšinou to končí práve na tom, že ma prestane baviť stále zisťovať logické súvislosti a následne prerábať (a často aj vysvetľovať logické nezmysly). A obávam sa, že niečo také nastalo aj v týchto súboroch, že to prekročilo nejakú medzu a "opustil" som Vás...
Budem úprimný, neviem či sa mi do toho chce.

Njn, zase tie sklady, čo som robil pred časom ... 7
"v automatickém filtru vyberu které data chci importovat"
Vy chcete filtrovať dáta v tom súbore, z ktorého chcete importovať dáta, ktorý ste práve otvoril?

"kliknu ok"
Ten súbor, ale predpokladám žiadne tlačítko nemá. Takže v inventarizačnom súbore bude musieť byť procedúra 2-kroková. Lebo makro, ktoré vyberie a otvorí zdroj, nemá ako zistiť či ste s výberom filtrov spokojný, a práve z tohto súboru a práve teraz chcete načítať vyfiltrované dáta. To je zase problémová "prodleva", lebo treba identifikovať či ste súbor nezatvoril.

VBA zjistí, že tato hodnota již ve sloupci C existuje, Procedura se ukončí s hláškou "Tyto produkty byli již importovány a data se nebudou kopírovat.
Takže napr. 5000 hlášok? Alebo pri prvej kolízii ukončí aj import validných dát?

vypíše mi kolik řádků bude importovat, zkontroluje sloupce C
Záleží na predchádzujúcej odpovedi. Nemôže najprv vypísať koľko riadkov bude importovať, ak nich najskôr neskontroluje - teda možno je to naopak (skontrolovať a až potom vypísať počet)

D1 se mi zobrazuje kolik je ještě volných řádků
A to chcete akože importovať iba časť nejakého súboru??? A čo zvyšok?

To zas bude upresňujúcich otázok, aby som Vás pochopil, ani sa mi do toho nechce 7

Ale tušíme, len sa nám nechce vymenovávať všetko aj s príkladmi. Tu je jeden. Ďalší by mohol byť tak, že tlačítko bude menšie ako bunka, každé makro zapíše do nejakej nepodstatnej/skrytej bunky hodnotu, na základe ktorej podmienené formátovanie zvýrazní bunku pod tlačítkom. Ďlaej, ak je tlačítkami volané obdobné makro, len s iným parametrom, dá sa urobiť jedno makro, ktoré bude identifikovať na základe Application.Caller, ktoré tlačítko je stlačené - teda nie tak ako je v tomto príklade. Ale to záleží na tom, čo tie makrá robia. A sme zase tam kde pred pár dňami v inej téme 1 Ďalšou možnosťou je použiť ActiveX tlačítka, kde je možnosť zmeny pozadia. Prípadne použiť namiesto tlačítka Shape objekt...
Priložte prílohu. Reálnu a anonymizovanú.

Čo ste nám to poslal za prílohu ??? 5

Záležať bude aj na tom, či sa bude hľadať 2t6552233 z rôznych bunkách, alebo iba v jednej napr. susednej. FIND/NAJÍT hľadá v jednej. Ak potrebujete otestovať nejaký rozsah, či obsahuje niektorá jeho bunka 2t6552233, tak použite COUNTIF(rozsah;"*"&hľadaná hodnota&"*")>0
Opravte tú prílohu za reálnu.

Obe verzie prerobené tak, že je jedno, či je to číslo alebo textočíslo. Každopádne to musí byť prevediteľné na číslo.
Ale ja by som si to určo previedol na čísla. Na to môžu nadväzovať ďalšie problémy ako filtre (časté aj pri dátum vs. textodátum) a pod. Jednorázové prevádzanie sa robí tak, že si niekde do bunky dočasne napíšete 1, tú bunku dáte Ctrl+C, označíte textočísla, pravý klik, Prilepiť špeciálne, Hodnoty a Násobenie, bunku s 1 zmažete. Ak to je často menené, napr. nejaký import, tak priamo v importe by to malo ísť, alebo pomocným stĺpcom so vzorcami ako to máte teraz. A možnosť je samozrejme aj takýto upravený vzorec čo Vám sem teraz dávam, ktorému je to jedno :)
=INDEX(V3:V45;INDEX(SMALL(IF(V3:V45*1<>0;ROW(V3:V45)-2;FALSE);ROW(OFFSET(A1;;;SUM(--(V3:V45*1<>0)))));RANDBETWEEN(1;SUM(--(V3:V45*1<>0)))))
=INDEX(V3:V45;INDEX(SMALL(KDYŽ(V3:V45*1<>0;ŘÁDEK(V3:V45)-2;NEPRAVDA);ŘÁDEK(POSUN(A1;;;SUMA(--(V3:V45*1<>0)))));RANDBETWEEN(1;SUMA(--(V3:V45*1<>0)))))

=SMALL(IF(V3:V45*1<>0;V3:V45*1;FALSE);RANDBETWEEN(1;SUM(--(V3:V45*1<>0))))
=SMALL(KDYŽ(V3:V45*1<>0;V3:V45*1;NEPRAVDA);RANDBETWEEN(1;SUMA(--(V3:V45*1<>0))))

Makrom by to šlo. Pri otvorení/ukladaní súboru by sa definovanému zoznamu mailov poslal mail. Či už Outlookom (na každom PC by musel byť) alebo len k tomuto účelu vytvoreným mailovým účtom gmail bez Outlooku cez tzv CDO (heslo bude v makre uložené, preto použiť iba na tento účel vytvorený učet).

A Vám nevadí, že Vám Excel jasne hovorí (zelený trojuholník), že tie "0" nie sú 0? Veď to tam jasne píše, že máte tie "čísla" uložené ako text. Použite normálne čísla a ten kratší vzorec. O tom, že to musí byť číslo, som písal aj ja.

EDIT:
A u dlhšieho vzorca je problém okrem textočísel aj v tom, že neviete ako funguje, a nesprávne ste ho upravil. Tučným som zvýraznil Vaše chyby. To A1 je tam na získanie číselného radu (indexu) začínajúceho 1 a končiaceho počtom <>0, to A1 bude vždy A1 bezohľadu akú oblasť chcete skúmať. A to -2 tam musíte dať z rovnakého dôvodu, aby ste získali číselný rad podľa počtu skúmaných buniek ale tiež začínajúcim od 1. Preto ak ste na riadku V3 tak -2.
=INDEX(V3:V45;INDEX(SMALL(IF(V3:V45<>0;ROW(V3:V45)-2;FALSE);ROW(OFFSET(A1;;;COUNTIF(V3:V45;"<>"&0))));RANDBETWEEN(1;COUNTIF(V3:V45;"<>"&0))))
=INDEX(V3:V45;INDEX(SMALL(KDYŽ(V3:V45<>0;ŘÁDEK(V3:V45)-2;NEPRAVDA);ŘÁDEK(POSUN(A1;;;COUNTIF(V3:V45;"<>"&0))));RANDBETWEEN(1;COUNTIF(V3:V45;"<>"&0))))

Napr.:
Sub Vyrobit()
Dim D(), i As Long
With ThisWorkbook.Worksheets("Hárok1")
D = .Range("AD4:AD48").Value
For i = 1 To UBound(D, 1)
If D(i, 1) = 0 Then D(i, 1) = Empty
Next i
.Range("E4:E48").Value = D
End With
End Sub

Predpokladám, že formáty v tom E sú nastavené, a tie netreba kopírovať.

EDIT:
Alebo môžete použiť aj nahradenie hodnoty:
Sub Vyrobit()
With ThisWorkbook.Worksheets("Hárok1")
.Range("E4:E48").Value = .Range("AD4:AD48").Value
.Range("E4:E48").Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End With
End Sub

Farby v DropDown-e v Exceli nie sú možné. Jedine naprogramovať makro, ktoré by pri každom označení vybraných (vopred známych) buniek zobrazilo výberovú šípku (tlačítko), a tá by otvárala malý formulár napr. s podfarbenými Label-mi. Po kliku by sa stalo čo? Na čo to má slúžiť?

Jednoduchší vzorec ma zatiaľ nenapadol, tak snáď niekto iný:
(maticový vzorec Ctrl+Shift+Enter)
=INDEX(A1:A6;INDEX(SMALL(IF(A1:A6<>0;ROW(A1:A6);FALSE);ROW(OFFSET(A1;;;COUNTIF(A1:A6;"<>"&0))));RANDBETWEEN(1;COUNTIF(A1:A6;"<>"&0))))
=INDEX(A1:A6;INDEX(SMALL(KDYŽ(A1:A6<>0;ŘÁDEK(A1:A6);NEPRAVDA);ŘÁDEK(POSUN(A1;;;COUNTIF(A1:A6;"<>"&0))));RANDBETWEEN(1;COUNTIF(A1:A6;"<>"&0))))


kratší variant, ale musia to byť čísla
=SMALL(IF(A1:A6<>0;A1:A6;FALSE);RANDBETWEEN(1;COUNTIF(A1:A6;"<>"&0)))
=SMALL(KDYŽ(A1:A6<>0;A1:A6;NEPRAVDA);RANDBETWEEN(1;COUNTIF(A1:A6;"<>"&0)))

"Kivan" napsal/a:

a pak že to nejde

O čom to hovoríte ??? Snáď nie o nedostatku niečej snahy ?! Môžete mi vysvetliť, ako do toho zapadá Vami požadovaná vlastnosť volať rovnaké makro z rôznych buniek? A ako toto makro rieši Vami požadovaný viacnásobný cieľ, prípadne jeden cieľ ale menený viacerými bunkami, ktoré ste spomínal?
Keďže ste odpovedal tuším všeho-všudy na 1 či 2 moje upresňovacie otázky, tak Vašich smajlíkov fakt neberiem. Vnímam ich ako narážku (ak nie rovno urážku).
Pekný deň.
=IFERROR(CHOOSE(B1;"Ano";"Ne";"Nevím";"Asi ne";"Asi ano";"Vymýšlím hovadiny");"---")
=IFERROR(ZVOLIT(B1;"Ano";"Ne";"Nevím";"Asi ne";"Asi ano";"Vymýšlím hovadiny");"---")

alebo
=IFERROR(VLOOKUP(B1;Tabuľka hodnôt;2;FALSE);"---")
=IFERROR(SVYHLEDAT(B1;Tabuľka hodnôt;2;NEPRAVDA);"---")

A ako prebieha to vkladanie dát z iného súboru? Súbor je otvorený/zatvorený? Jedná sa o import pomocou nástroju Importu (staršia verzia alebo novšia pomocou PowerQuery)? Jedná sa o makro aké robievam ja, ktoré vloží dočasné vzorce na vytiahnutie dát zo zatvoreného súboru? Jedná sa o čisté PowerQuery do pomocného listu a následné spracovanie makrom? Alebo sa jedná napr. o CSV načítané a delené makrom do polí? So všetkým suvísí ale základná otázka, či sa jedná o jeden záznam (riadok) či množstvo záznamov. A ďalšie a ďalšie otázky...

Ak sa jedná o jeden záznam, stačí Match alebo CountIf, ak sa jedná o množstvo záznamov, tak Collection s kľúčom.

Samozrejme zase bez prílohy...
To treba urobiť rovno v tom importovacom/kopírovacom makre ktoré nemáme.


Strana:  1 ... « předchozí  33 34 35 36 37 38 39 40 41   další » ... 289

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

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35

Řazení podle času v kategoriích

Marekh • 12.7. 9:55

Porovnávací Tabulka

Jess • 8.7. 20:49

Vzorec pro zkopírování obsahu buňky.

veny • 6.7. 8:28