Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  95 96 97 98 99 100 101 102 103   další » ... 298

No takto, zaregistrujte sa, a priložte prílohu - súbor. Citlivé dáta zamente, a nechajte len zopár. Hlavne ide o ponechanie rozmiestnenia všetkého. Aj kód sa bude v súbore ľahšie lúštiť s tabulátormi, ako takto bez nich.

Do prílohy Jiřího som zatiaľ nepozeral, no práve problém nadbytočných medzier som riešil vo svojich predchádzajúcich vzorcoch. Aj som to tam napísal. Je na to funkcia TRIM/PROČISTIT.

No to práve píše, že to nechce prepisovať na VBA funkcie. Postup s Name a Evaluate sa dá použiť takmer všeobecne. Ale samozrejme akákoľvek funkcia Excelu sa dá prerobiť do VBA, či už jednoduchšie alebo zložitejšie.

Asi iba použiť Evaluate spolu s dočasným vytvorením definovaného názvu, ktorý zabezpečí preklad vzorca pre Evaluate. V reťazci vzorca, treba tak či tak ošetriť úvodzovky ("" namiesto "):
Sub FUNKCE2()
Dim RetVal
Dim LocalFormula As String
Dim LanguageCode As Long

LanguageCode = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
If LanguageCode <> 1029 Then MsgBox "Nemožno vykonať, nesprávny jazyk Excelu.": Exit Sub

LocalFormula = "=CONCATENATE(ROK(EDATE(DNES();-1));""_"";KDYŽ(MĚSÍC(EDATE(DNES();-1))>9;MĚSÍC(EDATE(DNES();-1));CONCATENATE(0;MĚSÍC(EDATE(DNES();-1)))))"


On Error Resume Next
Names("EVALNAMELOCAL").Delete
On Error GoTo 0

Names.Add Name:="EVALNAMELOCAL", RefersToLocal:=LocalFormula
RetVal = Evaluate("EVALNAMELOCAL")
Names("EVALNAMELOCAL").Delete

MsgBox RetVal
End Sub

To samozrejme nemožno použiť 10 000x, lebo to bude pomalé.

???
List3.Range("B1").Value = IIf(SLOZKA = "False", SLOZKA1, SLOZKA)

Zlý popis, zlé makro, žiadna príloha. Riešenie bude bez problémov, ak pridáte prílohu, kde bude jasne ukázané čo máte (1. list), a čo má vzniknúť (2. list).
V tomto Vašom makre je "divno" definované, akú oblasť má prehľadávať na daný text.
Range("B" & xto, ActiveCell)
??? od B až po aktívnu bunku? Teda môže byť aktívna v rôznych stĺpcoch a aj tak makro má zlučovať?
A zlučovať sa má bunka s nájdeným textom so susednou zľava? Alebo ak bude prvá aktívna H, hľadať sa bude v B:G, nájde sa text v C, tak sa zlúči C:G ?
...
No dajte prílohu.

Názov listu na jeho ušku, to je akoby Caption/popis pre užívateľa. Vo VBA ak je list nemenný, tak je výhodnejšie mu priradiť tzv. CodeName. Je to položka Name v jeho vlastnostiach/Properties. Vtedy sa stačí potom v makre rovno odvolávať na jeho CodeName, a je šuma-fuk, čo má list napísané na svojom ušku.
Takže ak budete meniť iba názov uška listu, nastavte si CodeName a použite v makre to. Ak ale budete listy fyzicky stále vymieňať, tak musíte stále meniť aj názov listu v makre.

Teda príklad:
List "newdata" môžete volať v makre napr.:
Worksheets("newdata").blabla...
ale ak zmeníte jeho názov napr. na "newdata20", musíte zmeniť aj makro na
Worksheets("newdata20").blabla...
Ale ak mu priradíte CodeName na "wsNewData", tak je jedno či sa volá "newdata" alebo "newdata20", makro stále pobeží, lebo sa bude odvolávať na objekt s CodeName "wsNewData", teda
wsNewData.blabla...

Ja by som to nerobil cez Copy+PasteValues, ale rovno priradenie hodnôt.
Sub NACIST_NEWDATA()
Dim Radek As Long
Dim Pocet As Long

' Počet nových položek, určující je sloupec A:A
Pocet = wsNewData.Cells(Rows.Count, "A").End(xlUp).Row - 2
If Pocet = 0 Then MsgBox "Nejsou žádná nová data.", vbExclamation: Exit Sub

' První volný řádek v DB, určující je sloupec A:A
Radek = wsVTabulce.Cells(Rows.Count, "A").End(xlUp).Row + 1

With wsNewData.Range("B3").Resize(Pocet)
' Datum
wsVTabulce.Cells(Radek, "A").Resize(Pocet).Value = Date

' Značka
wsVTabulce.Cells(Radek, "D").Resize(Pocet).Value = .Value

' Kód, název, bližší určení
wsVTabulce.Cells(Radek, "F").Resize(Pocet, 3).Value = .Offset(0, 1).Resize(, 3).Value

' Skupina
wsVTabulce.Cells(Radek, "R").Resize(Pocet).Value = .Offset(0, 4).Value

' Dodavatel
wsVTabulce.Cells(Radek, "L").Resize(Pocet).Value = .Offset(0, 5).Value

' Položky
wsVTabulce.Cells(Radek, "K").Resize(Pocet).Value = .Offset(0, 6).Value

' Kopírované data
wsVTabulce.Cells(Radek, "AV").Resize(Pocet, 10).Value = .Offset(0, 17).Resize(, 10).Value
End With

MsgBox "Zapsáno " & Pocet & " nových řádků do databáze.", vbInformation
End Sub

Za mňa nič, rád som pomohol.

EDIT: Ba predsa len niečo, necitujte takéto dlhé príspevky. Ď.

OT: Nie neživím sa Excelom, a nieje to ani koníček, ale skôr poriadna kobyla 2

lugr napsal/a:

... stydím ...
???
To určite nieje prečo!
Za 1. nikto nepovedal, či to čo som spravil je správne, možno je to konina, a ešte k tomu čeština vyskloňovaná od slováka, čiže bársjaká blbosť tam môže byť. A za 2. keď vynakladáte snahu, nemôžete sa za ňu hanbiť. Mňa nakopol práve ten Váš vzorec.

Snáď vyskloňované dobre 5
=CHOOSE(MID(TEXT(A1;"000000000,00");1;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&CHOOSE(MID(TEXT(A1;"000000000,00");2;1)+1;;CHOOSE(MID(TEXT(A1;"000000000,00");3;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&IF(--(MID(TEXT(A1;"000000000,00");2;1))=1;"";CHOOSE(MID(TEXT(A1;"000000000,00");3;1)+1;;IF(--(MID(TEXT(A1;"000000000,00");1;3))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))
&IF(--(MID(TEXT(A1;"000000000,00");1;3))>4;"milionů";CHOOSE(--(MID(TEXT(A1;"000000000,00");1;3))+1;;"milion";"miliony";"miliony";"miliony"))

&CHOOSE(MID(TEXT(A1;"000000000,00");4;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&CHOOSE(MID(TEXT(A1;"000000000,00");5;1)+1;;CHOOSE(MID(TEXT(A1;"000000000,00");6;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&IF(--(MID(TEXT(A1;"000000000,00");5;1))=1;"";CHOOSE(MID(TEXT(A1;"000000000,00");6;1)+1;;IF(--(MID(TEXT(A1;"000000000,00");4;3))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&IF(--(MID(TEXT(A1;"000000000,00");4;3))>4;"tisíc";CHOOSE(--(MID(TEXT(A1;"000000000,00");4;3))+1;;"tisíc";"tisíce";"tisíce";"tisíce"))
&CHOOSE(MID(TEXT(A1;"000000000,00");7;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&CHOOSE(MID(TEXT(A1;"000000000,00");8;1)+1;;CHOOSE(MID(TEXT(A1;"000000000,00");9;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&IF(--(MID(TEXT(A1;"000000000,00");8;1))=1;"";CHOOSE(MID(TEXT(A1;"000000000,00");9;1)+1;;IF(--(MID(TEXT(A1;"000000000,00");7;3))=1;"jeden";"jedna");IF(INT(A1)=2;"dvě";"dva");"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&IF(INT(A1)>0;IF(INT(A1)=1;" koruna";IF(INT(A1)<5;" koruny";" korun")))

&IF(--(RIGHT(TEXT(A1;"000000000,00");2))=0;"";IF(INT(A1)>0;" a ";"")&CHOOSE(MID(TEXT(A1;"000000000,00");11;1)+1;;CHOOSE(MID(TEXT(A1;"000000000,00");12;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&IF(--(MID(TEXT(A1;"000000000,00");11;1))=1;"";CHOOSE(MID(TEXT(A1;"000000000,00");12;1)+1;;IF(--(RIGHT(TEXT(A1;"000000000,00");2))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&IF(RIGHT(TEXT(A1;"000000000,00");2)+0=1;" haléř";IF(RIGHT(TEXT(A1;"000000000,00");2)+0<5;" haléře";" haléřů")))


EDIT: No dobre, tak som to aj preložil do CZ:
=ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");1;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");2;1)+1;;ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");3;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");2;1))=1;"";ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");3;1)+1;;KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");1;3))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))
&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");1;3))>4;"milionů";ZVOLIT(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");1;3))+1;;"milion";"miliony";"miliony";"miliony"))

&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");4;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");5;1)+1;;ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");6;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");5;1))=1;"";ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");6;1)+1;;KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");4;3))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");4;3))>4;"tisíc";ZVOLIT(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");4;3))+1;;"tisíc";"tisíce";"tisíce";"tisíce"))
&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");7;1)+1;;"sto";"dvěstě";"třista";"čtyřista";"pětset";"šestset";"sedmset";"osmset";"devětset")
&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");8;1)+1;;ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");9;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");8;1))=1;"";ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");9;1)+1;;KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");7;3))=1;"jeden";"jedna");KDYŽ(CELÁ.ČÁSTA1)=2;"dvě";"dva");"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&KDYŽ(CELÁ.ČÁSTA1)>0;KDYŽ(CELÁ.ČÁSTA1)=1;" koruna";KDYŽ(CELÁ.ČÁSTA1)<5;" koruny";" korun")))

&KDYŽ(--(ZPRAVA(HODNOTA.NA.TEXT(A1;"000000000,00");2))=0;"";KDYŽ(CELÁ.ČÁSTA1)>0;" a ";"")&ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");11;1)+1;;ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");12;1)+1;"deset";"jedenáct";"dvanáct";"třináct";"čtrnáct";"patnáct";"šestnáct";"sedmnáct";"osmnáct";"devatenáct");"dvacet";"třicet";"čtyřicet";"padesát";"šedesát";"sedmdesát";"osmdesát";"devadesát")
&KDYŽ(--(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");11;1))=1;"";ZVOLIT(ČÁST(HODNOTA.NA.TEXT(A1;"000000000,00");12;1)+1;;KDYŽ(--(ZPRAVA(HODNOTA.NA.TEXT(A1;"000000000,00");2))=1;"jeden";"jedna");"dva";"tři";"čtyři";"pět";"šest";"sedm";"osm";"devět"))

&KDYŽ(ZPRAVA(HODNOTA.NA.TEXT(A1;"000000000,00");2)+0=1;" haléř";KDYŽ(ZPRAVA(HODNOTA.NA.TEXT(A1;"000000000,00");2)+0<5;" haléře";" haléřů")))

Pole tam nieje na odobranie duplicity, ale na hromadné načítanie a hromadný zápis hodnôt (nie bunku po bunke).

Duple odoberá kolekcia, konkrétne priradenie jedinečného kľúča v Add, v kombinácii s On Error. Funguje to tak, že záznamu v kolekcii sa okrem samotnej hodnoty priradí aj jedinečný kľúč (to isté ako hodnota). A keďže je to kľúč jedinečný, nedovolí pridať rovnakú hodnotu s rovnakým kľúčom 2x. Vznikne pri tom chyba, ktorú odchytí a spracuje On Error. Na konci sú v kolekcii iba jedinečné záznamy.

nemuselo, stačilo pridať on error, a kľúč v kolekcii, ale ja mám radšej polia :)

Pr.


Strana:  1 ... « předchozí  95 96 97 98 99 100 101 102 103   další » ... 298

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