Veď to A2 som Vám tam nahradil daným vzorcom. A ani pre Vás nemôže byť predsa problém si nahradiť v texte každý výskyt subtextu iným textom - teda adresu bunky vzorcom. Ak si pozriete moju poslednú prílohu tak v stĺpci AC je presne ten Váš požadovaný vzorec, ako jeden z dvoch možných variantov. Tak si len vzorec prehoďte z AC do F. Ale kopírujte iba vzorec, nie bunku.
Vidím, že v legende sa počíta s chybou (text ##### - chyba NEDOSTUPNÝ). Aj stĺpec UL. Takže aj v stĺpci MIX sa má zobraziť "#####" ak nenájde v Zpian? Alebo má byť potom bunka ="" ?
Makro na počítanie farby .... moje nervy, čo týždeň, to chce niekto spočítavať počet farieb. Na to Excel nieje stavaný. Zmena farby nespôsobí prepočet vzorcov, a teda na to ani makro nereaguje. Mám rozpracovanú celkom sľubnú metódu, ktorá by mala reagovať na zmenu farby, bez potreby niekam klikať, no zatiaľ nefunguje správne. Zmierte sa s potrebou aktualizácie počtu. Akurát asi nieje potrebné aby sa volala vo Vašom prípade makro funkcia pre každú bunku, ale iba jedna pre celý rozsah A5:A34 a pre všetky 3 farby naraz, a len do 1 bunky C35. Mám to tak urobiť?
EDIT: To s vypísaním chyby som pridal do stĺpca AC.
Makro som zmenil, Indexov farieb môžete do funkcie zadať variabilný počet. Tlačítko aktualizuje počet. Ak ste indexy farieb nepoužívali aj na niečo iné, stĺpec B nieje potrebný.
Perfiš. A aj to sa dá zjednodušiť a odmaticovieť:
=IF(ISNUMBER(A2);A2/10^(MATCH(0;MOD(A2;10^{0;1;2;3}))-1);"")
=KDYŽ(JE.ČISLO(A2);A2/10^(POZVYHLEDAT(0;MOD(A2;10^{0;1;2;3}))-1);"")
Namiesto tej 0 vo funkcii MAX tam dajte ešte obmedzenie
...
LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0))-3
...
EDIT:
Ak tomu dobre rozumiem, malo by stačiť podľa inšpirácie marjankaj aj kratšie:
=IF(ISBLANK(B5);" "; VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0)/10^(3-MAX(0;LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0)/10^3)-5)))
=KDYŽ(JE.PRÁZDNÉ(B5);" "; SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0)/10^(3-MAX(0;LEN(SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0)/10^3)-5)))
Teda pre názornosť marjankajov vzorec po úprave:
=A1/10^(3-MAX(0;LEN(A1/10^3)-5))
=A1/10^(3-MAX(0;DÉLKA(A1/10^3)-5))
opravte ma prosím ak sa mýlim.
EDIT 2:
Tak opravujem sa sám, môj predošlý vzorec je na prd, vracia zlé výsledky, ak je číslo bez núl kratšie ako 7 alebo ak je číslo s nulami kratšie ako 5.
každopádne Marjankajove riešenie funguje bezchybne. Upravené iba na 3 nuly:
=A1/10^LEN(A1)*10^MAX(LEN(A1)-3;LEN(A1/10^LEN(A1))-2)
=A1/10^DÉLKA(A1)*10^MAX(DÉLKA(A1)-3;DÉLKA(A1/10^DÉLKA(A1))-2)
Teda Váš vzorec bude
=VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0)/10^LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0))*10^MAX(LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0))-3;LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0)/10^LEN(VLOOKUP(B5; Zpian!$F$6:$AC$10001;5;0)))-2)
=SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0)/10^DÉLKA(SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0))*10^MAX(DÉLKA(SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0))-3;DÉLKA(SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0)/10^DÉLKA(SVYHLEDAT(B5; Zpian!$F$6:$AC$10001;5;0)))-2)
Končím "výskum"
Tu je teda jedno z riešení.
OT:No vidím, že sme včera viacerí "nemali čo v noci robiť" :) Ja som pri tom zaspal. keď som sa zobudil, v bunke napísaných asi 200 písmen "C" Komentáre som písal v polospánku, teraz som ich ráno skontroloval, no čo som tam preklepov nasekal, evidentne som už na to nevidel. Teraz by v nich snáď mali byť už len gramatické chyby, lebo česká gramatika mi robí niekedy problém.
Maticový vzorec ? (Ctrl+Shift+Enter)
=INDEX(N1:N7&","&O1:O7;MATCH(MAX(COUNTIFS(N1:N7;N1:N7;O1:O7;O1:O7));COUNTIFS(N1:N7;N1:N7;O1:O7;O1:O7);0))
=INDEX(N1:N7&","&O1:O7;POZVYHLEDAT(MAX(COUNTIFS(N1:N7;N1:N7;O1:O7;O1:O7));COUNTIFS(N1:N7;N1:N7;O1:O7;O1:O7);0))
Poskytnite aspoň čiastočný súbor, kde budú tie 2 listy, nejakých pár vymyslených údajov. Citlivé data nepotrebujeme. Ale presné rozloženie áno. To sa bez prílohy robí veľmi zle, navyše keď ako sám vravíte, to Vaše makro nemusí byť vôbec smerodajné, čo sa týka určenia pohyblivých častí adries.
@ Tom12345 :
Dajte si do pomocnej bunky
=B2&CHAR(10)&B3&CHAR(10)&B4&CHAR(10)&B5&CHAR(10)&B6&CHAR(10)&B7&CHAR(10)&B8&CHAR(10)&B9&CHAR(10)&B10
=B2&ZNAK(10)&B3&ZNAK(10)&B4&ZNAK(10)&B5&ZNAK(10)&B6&ZNAK(10)&B7&ZNAK(10)&B8&ZNAK(10)&B9&ZNAK(10)&B10
alebo v nových Office 2019
=TEXTJOIN(CHAR(10);TRUE;B2:B10)
=TEXTJOIN(CHAR(10);PRAVDA;B2:B10)
a v textovom poli sa odkazujte na túto pomocnú bunku. S pomocou CHAR(10) budú pod sebou, s pomocou napr. "," budú oddelené čiarkou za sebou.
=INDEX(D20:O20;;LOOKUP(2;1/(D33:O33<>0);COLUMN(D33:O33)-3))
=INDEX(D20:O20;;VYHLEDAT(2;1/(D33:O33<>0);SLOUPEC(D33:O33)-3))
alebo
=INDEX(D20:O20;;LOOKUP(2;1/(D33:O33<>0);{1\2\3\4\5\6\7\8\9\10\11\12}))
=INDEX(D20:O20;;VYHLEDAT(2;1/(D33:O33<>0);{1\2\3\4\5\6\7\8\9\10\11\12}))
analogicky urobíte aj ten vertikálny:
=INDEX(C21:C32;LOOKUP(2;1/(P21:P32<>0);{1;2;3;4;5;6;7;8;9;10;11;12}))
=INDEX(C21:C32;VYHLEDAT(2;1/(P21:P32<>0);{1;2;3;4;5;6;7;8;9;10;11;12}))
To je predsa pre to, že to makro, ako som napísal, je robené na data, ktoré UŽ MAJÚ PRIDANÝ STĹPEC "N" "Inštrumentárka". Teda pri preformátovaní sa odoberie všetkému formát pomocou ClearFormats, a následne sa nastaví pre potrebné stĺpce formát času. Tak ste to aj mala, len som to posunul, lebo je tam pridaný stĺpec "N". Teda na čas sa preformátuje O:W. Nie N.
Tak aké je teda rozloženie stĺpcov?
"Karásková Zuzana" ??? Nič také tam nieje.
"odstranit 5. prázdný řádek" ??? Opäť nič také v prílohe neexistuje.
Rozumiem iba jedinej veci, chcete pridať ďalšieho manipulanta. Čo vymazať netuším. No a mazanie prázdnych riadkov v plánoch, je bez makra nerealizovateľné, lebo tabuľky sa vzorcami posúvať nedajú.
Treba lepší popis s korešpondujúcou prílohou.
No kým som to urobil, dala ste novšiu prílohu. Pozrite či to sedí aj na tú novšiu. Robil som to na tú o 9:11. Je to aj s tým pridaným stĺpcom, ktorý má byť podľa Vás za M->O, ale za M je N :)
Tiež sa dátum neťahá z A2 do J2, ale z A3 do J1.
To je moje makro, pamätám si na to. Píšete, že sa Vám zmenili podmienky. No dobré by bolo vysvetliť čo sa všetko zmenilo, a hlavne z čoho sa zmenilo (pôvodné). Ja keď sa pozriem na makro, čo robí, tak mi to nesedí s týmito dátami hneď z kraja. Testuje sa buka A1 na hodnotu "Cas", a vkladá sa riadok, prepočíta sa počet dátových riadkov. V týchto dátach je ale bunka A1 "Názov". Skrývanie stĺpcov tam je do kódu evidentne doplnené, rovnako ako formátovanie dátumočas na konci. Priložte aj pôvodné. Ja to niekde medzi tisíckami súborov, ale kto to bude hľadať :)
Podľa mňa to po lepšom popise a pochopení sa, nebude prob.
Toto bude rýchlejšie ako GetObject. Vytvorí si to dočasne definovaný názov, vypočíta, zmaže:
Sub Test2()
Dim Subor As String, Cesta As String, List As String, Stlpec As String, Posledny As Long
Cesta = "Z:\"
Subor = "Dostupnost.xlsx"
List = "Ověření"
Stlpec = "$B:$B"
With ThisWorkbook
On Error Resume Next
.Names("POSLEDNY_R").Delete
On Error GoTo 0
.Names.Add "POSLEDNY_R", "=LOOKUP(2,1/('" & Cesta & "[" & Subor & "]" & List & "'!" & Stlpec & "<>""""),ROW($A:$A))"
Posledny = ExecuteExcel4Macro("'" & .FullName & "'!" & "POSLEDNY_R")
.Names("POSLEDNY_R").Delete
End With
MsgBox Posledny
End Sub
a nemôžem zabudnúť na moje obľúbené "dolovanie dát" cez vzorec vložený do určenej bunky, prečítaný a zmazaný (to bude asi ešte rýchlejšie):
Sub Test3()
Dim Subor As String, Cesta As String, List As String, Stlpec As String, Posledny As Long
Cesta = "Z:\"
Subor = "Dostupnost.xlsx"
List = "Ověření"
Stlpec = "$B:$B"
With ThisWorkbook.ActiveSheet.Range("A1")
.Formula = "=LOOKUP(2,1/('" & Cesta & "[" & Subor & "]" & List & "'!" & Stlpec & "<>""""),ROW($A:$A))"
Posledny = .Value
.Clear
End With
MsgBox Posledny
End Sub
Možno by bolo lepšie použiť iba jeden skrytý maticový stĺpec na výpočet indexu, a ostatné už normálne vzorce.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.