Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  272 273 274 275 276 277 278 279 280   další » ... 289

Nech sa páči.
Najskôr som myslel, že to má byť hneď pri zmene nejakej bunky, preto som vravel, že to nemá logiku, lebo by sa nikdy nič iné okrem práve zapísanej bunky, nepresunulo. Na tlačítko to už zmysel má.

No to je zasa popis. Takže otázky:
1. V Head1 sú vždy data ? Teda sa dá považovať riadok za zaplnený keď sú v tomto stĺpci data ?
2. Tento stĺpec Head1, ak je ako jediný zaplnený, tiež sa má "posunúť" do stĺpca Head5, tak ako stĺpce Head2, Head3, Head4?
3. Čo znamená to "posunúť" ? Ak to, že sa skopíruje posledná bunka z rozsahu Head2-Head4 (príp. Head1-Head4 viď vtššie) do bunky Head5, tak OK. Ak ale "posunúť" znamená presun, tak to znamená, že nikdy sa nedostaneš na ďalšiu bunku. Napr. zistíme zápis do Head3, a toto presunieme do Head5, čiže Head3 je opäť prázdna. Na Head4 sa teda ani nedostaneš (za predpokladu že pôjdeš doradu)
...

Presne tak, všetky premenné musia mať rovnaký typ, alebo musia byť na rovnaký typ retypovateľné. A to číslo -1 nieje. Inak by to boli klasické jablká a hrušky.

Ktorú verziu toho môjho návrhu používate ? V novších verziách to vyhodí zoznam nulových produktov IBA ak v nejakej bunke (čiže v Excely to väčšinou znamená v aktívnej bunke) nastane 0. Ak je tam X núl, ale práve sa nejaká hodnota na 0 nezmení, tak nič nevypíše.
Snažím sa dešifrovať, čo ste napísali. Takže vy teraz chcete, aby keď nastane 0, sa nevypísal zoznam nulových produktov, ale aby napísanie 0, spôsobilo odčítanie jednotky od neviem odkiaľ ? Neviem ako sa dá odpočítať 1 od počtu ks, keď práve ten počet ks, som práve zmenil na 0.
Skúste to prosím povedať nejako inak.

A prečo nám to sem nenapíšete. Od nás chcete odpovede, ale o svoje sa nepodelíte. No no no 1
Inak takto:
Application.CommandBars("Ply").Enabled = False

Do modulu dajte:
Sub RightClick()
Dim WS As Worksheet, i As Integer
Dim oMenu As CommandBar, oItem As CommandBarControl
Set oMenu = CommandBars.Add("", msoBarPopup, , True)
For Each WS In Worksheets
Set oItem = oMenu.Controls.Add
oItem.Caption = WS.Name
oItem.OnAction = "'Vyber """ + WS.Name + """ '"
Next WS
oMenu.ShowPopup
End Sub

Sub Vyber(WS As String)
Worksheets(WS).Activate 'Nejaká Vaša činnosť s vybraným listom
End Sub

Do ThisWorkbook dajte toto :
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
RightClick
Cancel = True
End Sub


Pri Pkliku na ktoromkoľvek liste Vám dá na výber zo zoznamu všetkých listov, a vykoná procedúru Vyber, v ktorej si už ošetrite ako potrebujete. Parameter WS v nej obsahuje názov zvoleného listu v kontextovom menu.

Len na okraj:

Ak je to ten zošit "Protokol_o_hlaseni_poruchy" z iného príspevku, tak urobte:

Zmente si v "Datový list" hodnoty dátumov z "1.". "2.", "3.", ... na 1,2,3 (proste bez bodiek).

V tomto liste zmente formát bunky s dátumom na Vlastný dd.mm.yyy (v CZ asi dd.mm.rrrr), a aj vzorec na výpočet dátumu na :
=DATE(Protokol!D8;Protokol!C8;Protokol!B8)

Zmente si v Databáza celý stĺpec Datum na formát Vlastný dd.mm.yyyy (CZ viď vyššie)

Na liste Protokol zmente formát Den a Mesiac na Vlastný General"."

Overenie údajov v Deň dajte na reálne možné dni :
=OFFSET('Datový list'!$G$2:$G$32;;;DATE(D8;C8+1;1)-DATE(D8;C8;1);1)
Tu by bolo ešte dobré v makre dorobiť úpravu, keď napr máte v roku február s 29 dňami, a zmeníte rok na rok kde je 28, tak Excel aj keď má správne vypoťítaný rozsah čísel predošlým vzorcom, tak v prípade prekročenia to najvyššie možné automaticky nevloží.

A ten Váš vzorec na výpočet počtu výskytov, neviem síce ako funguje (odkiaľ berie vstupné dáta na filter), tak by mohol vyzerať upravený pre vstup z buniek aj takto
=COUNTIFS(Databáze!$A:$A;$C$1&"*";Databáze!$C:$C;">"&DATE($D$8-1;12;31);Databáze!$C:$C;"<"&DATE($D$8+1;1;1))
kde si za $C$1 dosadte bunku s hľadaným textom, a za $D$8 si dosadte bunku s hľadaným rokom.

Len toľko na margo...

Neviem, ako ste to poriešili, ale ak by ešte niekto mal záujem, tak asi takto by to mohlo byť:
Sub ClearZeroRows()
Dim PR As Long, Pole(), i As Long, Zero As Range
PR = Cells(Rows.Count, 1).End(xlUp).Row
If PR < 2 Then Exit Sub
Pole = Range("A2:B2").Resize(PR - 1).Value
For i = LBound(Pole) To UBound(Pole)
If Pole(i, 1) = 0 And Pole(i, 2) = 0 Then
If Zero Is Nothing Then Set Zero = Rows(i + 1) Else Set Zero = Union(Zero, Rows(i + 1))
End If
Next i
If Not Zero Is Nothing Then Zero.EntireRow.Delete
End Sub


EDIT: A ak by bolo potrebné celé riadky nemazať, napr. kvôli iným dátam vedľa tabuľky, tak potom takto:
Sub ClearZeroRows2()
Dim PR As Long, Pole(), i As Long, NonZero(), NZ As Long
PR = Cells(Rows.Count, 1).End(xlUp).Row
If PR < 2 Then Exit Sub
Pole = Range("A2:C2").Resize(PR - 1).Value
ReDim NonZero(1 To UBound(Pole), 1 To 3)
For i = LBound(Pole) To UBound(Pole)
If Pole(i, 1) <> 0 Or Pole(i, 2) <> 0 Then
NZ = NZ + 1
NonZero(NZ, 1) = Pole(i, 1)
NonZero(NZ, 2) = Pole(i, 2)
NonZero(NZ, 3) = Pole(i, 3)
End If
Next i
Range("A2:C2").Resize(PR - 1).Value = NonZero
End Sub

Overflow je pretečenie. Prvá chyba je hneď tu :
Set rng = Range("A2:C105" & LastR)
má byť
Set rng = Range("A2:C" & LastR)
alebo
Set rng = Range("A2:C105")
v tomto prípade fnc LastR potom nieje treba

Zmeniť, vyskúšať, dať vedieť. Nech to nemusím nadarmo lúskať a hádať čo by tam mohlo byť ešte zmenené.

Modul s deklaráciou globálnej premennej tam máte, však?

Šmarjá, som nevedel, že je tu taká diskusia a v tichosti som pracoval na "novom" variante. Už ho sem dám, čo už s ním, ostatné návrhy budem (ak vôbec bude čas a chuť) študovať neskôr.
Importuje to rovno do listu s tabuľkou. Žiaľ tabuľka nereflektuje na pridanie riadkov za ňou cez import (do nej cez import nejde vkladať - konflikt), tak sa musí urobiť resize. Ak tam vložím iným spôsobom data (Paste, priradenie poľa), tak to funguje, ale nie import.
Cez pole ma to tiež napadlo, to som chcel skúsiť ako ďalší variant. Proste všetko iba v pamäti a potom Flush (tak ste to tuším čo narýchlo pozerám aj robili).
Je to nastavené na Vaše podmienky (A-AI text data, AJ-AR vzorce). Otestoval som to a +- 114200 riadkov to spraví za 20s. Dočasný list sa nevytvára.
Rozmýšľal som aj nad tým aby to ťahalo rovno XML, to by sme potrebovali náhľad na to XML.

PS: Ešte na konci by bolo treba zmazať riadky, ktoré boli použité. Celé Rows, nie ClearContent. Po ClearContent na 114000 riadkoch je súbor 2,2MB. Po odstránení Rows má 30KB. Snáď by to šlo aj nejako sofistikovanejšie.

Asi takto nejako som to mal na mysli. Musel som použiť vytvorenie a zmazanie pomocného dočasného listu pre import, lebo mi stále nechcelo nastaviť tabuľku do importovanej oblasti a opačne. Možno len treba inak zmazať Connection, ako som sa snažil ja. Takže zatiaľ takto. Je to zatiaľ koncipované len na CSV s jedným stĺpcom (cca 25000 Rows). Pre Vaše potreby to treba upraviť na požadované parametre.

Tu som pridal ešte popis makra.

Aj tak by som sa pre seba pokúsil o zjednodušenie. Na 1 klik.
-vymaže sa tabuľka okrem prvého riadka, a zmení sa jej veľkosť na 1 dátový riadok
-zistíme ktorý CSV (akéhokoľvek názvu) v adresári má najvyšší dátum, to bude asi náš favorit. Ak tam bude vždy len jeden, je to ešte jednoduchšie.
-od druhého riadka sa naimportuje CSV, to by malo zabezpečiť pridanie vzorcov. Do tabuľky importovať totiž nejde. Musí to byť jednorazový import, nie vytvorenie pripojenia, keďže sa názov CSV mení.
-prvý dátový riadok tabuľky zmažeme
-a máme tabuľku o správnom počte riadkov (bez prázdnych na konci), so vzorcami, takže updatneme KT.
-ak by sa všetky stĺpce CSV nevkladali jeden vedľa druhého, ale medzi nimi by bol nejaký stĺpec so vzorcami, tak by sa to muselo urobiť inak.

Uvažujem správne, že by takto bol potrebný len jediný klik, a CSV by sa ani neotváralo, nevkladali by sa hodnoty...?

Teraz neviem, či to správne chápem. Takže to čo som naposledy poslal, je OK, to nechať. A k tomu ešte dorobiť nejaký zoznam čisto len tých linkov na eshop pre tovary, ktoré majú 0 ks, napr. na nový list ?

Upravené. Dodrž aj opačné lomítko vždy tak ako som to tam dal.


Strana:  1 ... « předchozí  272 273 274 275 276 277 278 279 280   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