Anonymizujte oba druhy súborov a priložte ich. Nemeňte formáty, umiestnenia, názvy listov a pod. Aká je verzia Office, na ktorej to bude bežať? Súbory sú uložené na disku v PC alebo na cloude?
To LEN/DÉLKA a VALUE/HODNOTA dajte preč
=IF(AND(INDEX(preplatok;O1;10)="a";INDEX(preplatok;O1;12)=0);"zaplať";"nie")
=KDYŽ(A(INDEX(preplatok;O1;10)="a";INDEX(preplatok;O1;12)=0);"zaplať";"nie")
Tak?
V definovaných názvoch OFF_RAD a OFF_STLP je odkaz na bunku s dátumom Data!$F$3, tak si premenujte Vašu vyvolenú dátumovú bunku na napr. CHECK_DAT, a v týchto dvoch definovaných názvoch vymeňte všetky výskyty Data!F$3 za CHECK_DAT. Potom už prípadná zmena dátumovej bunky bude jednoduchšia. Myslím, že inde dátum už použitý nie je, lebo sa použil iba na výpočet offsetu prvého dňa (akoby súradnice).
Inak neviem, ktorý vzorec ste použil, ak prvý, tak si dajte pozor aj na to "-16" -> to je o 1 menšie číslo ako riadok zoznamu listov.
Ak neviete ako tie vzorce fungujú, tak úprava môže spôsobiť nejaký malý problém, tak sa prípadne ozvite.
@Stalker: Možné to samozrejme je. Cez class v ktorej iba odchytíte udalosti aplikácie. Mám to vyskúšané, ale problém, ktorý ešte riešim, je ten, ako odchytiť a správne vykonať prvé otvorenie Excelu nejakým súborom. Vtedy mi to nevykoná. Ak prekliknem nejaký list, tak už áno. Len to prvé otvorenie... Logujem udalosti, ktorá kedy nastáva, a ani poradie nie je vždy isté. Po sviatkoch ešte na to skúsim pozrieť.
OT: Jazdiť "nalitý"? Na auto nemám ani pomyslenie, pretože mi servisák oznámil opravu za 5000,- €.
Tu máte 3 príklady pre novšie Office (modré), a 1 pre starší (fialový).
A na to by stačila asi aj zjednodušená verzia, nie?
No v tom prípade musíte poskytnúť prílohu.
EDIT: A čo zámok? Skúste ten list predtým odomknúť, ak je zamknutý.
Je to posledný viditeľný list, a ten Vám nepôjde skryť. Najskôr nejaký musíte odkryť.
Akú máte verziu Office na ktorej to pobeží?
Pr.
A jedinečné hodnoty sú tam vždy iba 2, keď máte na to 2 stĺpce F a G ?
Aká verzia Office (nové majú pokročilejšie funkcie) ?
Aký spôsob dopracovania k výsledku (PowerQuery, makro, vzorce) ?
Moje nervy, chlape ...
Aj niečo z popisu sedí s makrom a niečo z makra sedí s listom? Stĺpcom H myslíte F, posunom o 6 myslíte 5, riadkom 16 myslíte 17, a 19 je v skutočnosti 28. 14-imi riadkami je myslených 12, atď. Vzor nesedí o riadok s listami (2 vs 3 riadky na poruchy, pridal som do vzoru 1 riadok teda)! Počet vozíkov v strediskách má ísť skutočne do tých žltých polí a nie do polí "počet v." ???
Takže. Potrebujete danú funkčnosť pre každý list samostatne, a tých listov bude mrte veľa (každý deň)?
Dopredu sú určené smeny na celé roky na liste Database (E1,J1,O1), a Vy tam chcete tlačítkom ABC načítať dáta z inej smeny???
Prerobil som skoro všetko, čo si myslím, že treba. Aj vytváranie nových listov.
Ak by som mal k dispopzícii príkladné súbory "gluing-line_" a "Mixes_", pokúsil by som sa prerobiť aj load_data na verziu cez ADO (bez otvárania súboru), ak by to šlo.
Vyskúšajte, a prípadne doplnte info a prílohy. Ak je to citlivé, pošlite mi to na mail.
Pr.
Jedná sa iba o 3 bunky E1, K1, Q1 (hodnota v zlúčených bunkách E1:E2 sa uchováva v E1), alebo aj inde môžu byť písmená?
Ak kopírujte Data!O2:O4 (to sú 3 riadky) do zelených polí. Tieto polia ale nie sú v stĺpci "i", ktorý nájdete hľadaním písmena.
Skúste tam ešte doplniť nejaké dáta do prílohy (lebo kontrolujete počet v oblasti zelená+1 stĺpec), a pridajte kópiu listu s požadovaným výsledkom, ak teda stlačím "Data B".
Jedná sa o totálnu prkotinu, len Vás tak pochopiť...
V žiadnom prípade nepoužívajte Copy, ale rovno Value2, a rovnako nie 3 takmer rovnaké makrá, ale jedno parametrizované. Všetko spravím ak pochopím...
EDIT:
Skúsil som sa vysomáriť z "popis vs makro". Viď príklad v prílohe.
Sub Data_X(Co As String)
Dim i As Integer
Dim rngZapis As Range
With wsObsluha
On Error Resume Next
i = WorksheetFunction.Match(Co, Array(.Range("E1"), .Range("K1"), .Range("Q1")), 0) - 1
If Err.Number <> 0 Then MsgBox Co & " neexistuje", vbCritical: Exit Sub
On Error GoTo 0
Set rngZapis = .Range("D16:D18").Offset(, i * 6)
End With
If WorksheetFunction.CountA(rngZapis) > 0 Then
If MsgBox("Pod " & Co & " se nalézají data." & vbNewLine & "Chcete je přepsat ?", vbCritical + vbYesNo) = vbNo Then Exit Sub
End If
rngZapis.Value2 = wsData.Range("O2:O4").Value2
End Sub
Sub data_A()
Data_X "A"
End Sub
Sub data_B()
Data_X "B"
End Sub
Sub data_C()
Data_X "C"
End Sub
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.