< návrat zpět

MS Excel


Téma: podminene formatovani - porovnani dvou sesitu rss

Zaslal/a 31.8.2015 14:10

MistrYpsilonZdravim vas,

mam dva soubory a potrebuju mezi sebou porovnat jeden sloupec, v jednom souboru je to sloupec A a ve druhem souboru je to sloupec C, porovnavaji se mezi sebou cisla, pokud se budou shodovat ,potreboval bych,aby se daná buňka jakkoliv zbarvila, děkuji

P.S. musím zanechat dva soubory

děkuji

Zaslat odpověď >

Strana:  « předchozí  1 2 3
#026787
avatar
Jak už to u dlouhých vláken bývá, původní dotaz se rozdvojil. Na jedné straně je přímá linka na tazatele, která je zpravidla jednoduchá: obsahuje doporučení, které tazatel buď přijme nebo taky ne. Druhou linku představuje polemika mezi odpovídajícími, v čem je ta která cesta lepší a horší.
Pokud fórum beru jako jednotku poslední pomoci, pak je ta druhá linka v podstatě zbytečná. Pokud ho chápu jako místo pro setkávání názorů, pak ta druhá linka má často daleko vyšší hodnotu než původní dotaz. Pro mne jsou dotazy zdrojem inspirace a diskusi nad nimi vítám jako zdroj pro tříbení názorů a poučení.
Doporučuji diskusi tady přerušit a pro případnou nedokončenou diskusi otevřít nové vlákno.citovat
icon #026790
eLCHa
Mno - jednoduchý dotaz. Říkal jsem si - tady poradí někdo jiný. Ale když už je tu 3. strana - tak jste mně to donutili přečíst ;)). Přečtu si to ještě jednou a pomalu a pokud budu mít co dodat, dodám. Nicméně, pokud bych měl něco dodávat - tak bych to vlákno ne "rozdvojil", ale minimálně roztrojil. A tak asi budu potichu ;)))citovat
#026791
elninoslov
Podstatné zlepšenie výkonnosti makra spočíva v nevytváraní Excel.Application pri každkom prepočítaní listu pre každú bunku, ale použiť globálnu premennú, a tú v Before.Close zrušiť. Riziko pádu aplikácie a toho, že ostane v pamäti vysieť inštancia Excelu, je rovnaké ako v predošlom prípade, ale neporovnateľne svižnejšia odozva. Takto sa to používať dá.

A ak by niekoho ešte zaujímalo prečo to ExecuteExcel4Makro najskôr mne nešlo sprevádzkovať, tak to bolo práve v tom, že som nepoužil novú inštanciu Excel.Application. Vo funkcii to bez toho nefunguje v procedúre áno.
Příloha: rar26791_b.rar (30kB, staženo 23x)
citovat
icon #026806
eLCHa
@elninoslov
Vaše řešení beru jen jako perličku, že to takhle lze.

Máte globálně deklarovánoDim xlApp As New Excel.ApplicationToto je potenciálně nebezpečná deklarace. Pokaždé, když v kódu budete volat xlApp a ona v tu chvíli bude Nothing, otevře se Vám nová instance excelu. A ve spojení s tím, že excel může globální proměnnou po nějakém čase zapomenout, tato situace může nastat a pravděpodobně při delším otevření sešitu i nastane. Navíc Vám ani nepomůže testovatIf xlApp Is NothingVyzkoušejte následující kód, snad Vám to objasníSub test()
xlApp.Quit
Set xlApp = Nothing
'nyní je nastaveno nothing, přesto se místo chyby vytiskne text a zobrazí se okno aplikace
Debug.Print xlApp.Caption
xlApp.Visible = True
End Sub
Tato deklarace má své využití, ale toto by neměl být ten případcitovat
#026807
elninoslov
Ale k vytvoreniu novej inštancie predsa neprichádza pri každom teste. Vytvorí sa iba:
1. pri otvorení súboru
2. ak ju Excel zruší, alebo ju zrušíme my manuálne (Quit+Nothing), tak ako ste dal príklad, tak pri najbližšom použití premennej xlApp, si ju Excel vytvorí sám, a iba jednu. Nech pozerám do Správcu úloh ako chcem, tak tam vidím "Microsoft Excel" iba raz. Druhý proces "Microsoft Excel" je už samotný súbor v ktorom pracujeme. Takto sa to správa na mojom Excel 2013. Takže podľa Správcu úloh, žiadneho úbytku pamäti, rýchlosti vykonávania, si nemyslím, že každé volanie vytvára inštanciu, ani nieje u mňa problém pri zmazaní inštancie.

Ak sa to dá overiť ešte inak, pls poraďte.citovat
icon #026809
eLCHa
Berte to jako upozornění na problém s deklarací pomocí As New.

Nasimulované to nemám - vycházím z předpokladu, že vím, že excel globální proměnné zapomíná (vlastní zkušenost nebo např. http://www.tushar-mehta.com/publish_train/xl_vba_cases/1017%20Save%20a%20global%20in%20an%20Excel%20workbook.shtml).
Pak ve Vašem případě.
1) Otevřete sešit a zároveň vytvoříte novou skrytou instanci.
2) Necháte sešit otevřený dlouho bez činnosti. V té době zapomene excel, že skrytá instance spojena s xlApp - ta je tedy nothing.
3) Provedete činnost, která zavolá xlApp (u Vás by měl stačit výpočet) - ta jest Nothing => Nová instance + ta stará tam zůstala viset. Netvrdím, že se to musí stát, ale považuji to za pravděpodobné.

Toto asi těžko nasimulovat. Musel byste mít náladu to zkoušet. Navíc, já nevím s čím je spojeno ono zapomenutí (potřeba uvolnění paměti?) - více jsem to nezkoumal. Mně stačí, že vím, že to nastává a tak s tím prostě počítám. U mne to nastává ve spojení s Ribbonem - typicky celý den otevřený excel.

Snad je to alespoň trochu pochopitelné.citovat
#026810
elninoslov
Ja Vás chápem, čo máte na mysli. Ale môj Excel ak má xlApp=Nothing, tak si ho sám vytvorí a použije. Ak nieje Nothing, tak ho nevytvorí ale iba použije. Jedine ma napadá, že to Excelácke "zabudnutie" nenastaví premennú na Nothing, ale kompletne zabudne aj deklaráciu. Proste urobí niečo iné ako len set Nothing. Pretože zo stavu set Nothing sa bez problémov sám dostane.

Rozširujúca otázka, myslíte, že cez RecordSet ADODB by to bolo riešiteľné ?citovat
icon #026812
eLCHa
Ano sám si vytvoří - ale co s tou minulou? Kdy jste ji zavřel? ;)

Já myslím, že ano - i když mi to všechno přijde zbytečně moc komplikované. Vydal bych se cestou, kterou jste ukázal už na začátku.citovat
#026815
elninoslov
Premennú xlApp ruším až v BeforeClose udalosti. To som ju iba teraz pre testovanie rušil v behu makra, ako ste písal, aby som vyvolal situáciu, že čo sa stane, keď ju po dlhšej nečinnosti zruší Excel sám. A nič sa nestane. Excel si ju vytvorí. Žiadna inštancia mi nikde nevisí. Ale s prepáčením už kašlem na to. Je to, ako ste podotkol, zbytočné.citovat

Strana:  « předchozí  1 2 3

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje