Ale Vy si môžete určiť aj ktoré stĺpce sa majú ignorovať.
Ak chcete ešte k tomu aj selektovať na základe nejakých podmienok aj riadky, dá sa použiť PQ, kde bude výstupom už učesaná Tabuľka, alebo CSV rozobrať makrom v cykle a pomocou Split().
Áno dobrý postreh, elektromer sa mení celkom bežne. Tak ja neviem, napr. by sa mohol nový elektromer dať do zdroja do nových stĺpcov ale s rovnakou firmou a pokračovalo by sa v novom mesiaci. Konečné súčty by sa museli upraviť vzorce na nejaké maticové sčítanie. Ak to bude treba porozmýšľam nad tým...
Dajte si niekam maticový vzorec (Ctrl+Shift+Enter), a natiahnite ho na rovnakú výšku.
=IFERROR(INDEX(STATY;SMALL(IF(VITAZSTVA>ZAPASY/2;ROW(STATY)-MIN(ROW(STATY)-1));ROW(A1)));"")
=IFERROR(INDEX(STATY;SMALL(KDYŽ(VITAZSTVA>ZAPASY/2;ŘÁDEK(STATY)-MIN(ŘÁDEK(STATY)-1));ŘÁDEK(A1)));"")
Definované názvy pre zjednodusenie:
STATY
=OFFSET(Hárok1!$A$2;;;COUNTIF(Hárok1!$A$2:$A$100;"<>"))
=POSUN(Hárok1!$A$2;;;COUNTIF(Hárok1!$A$2:$A$100;"<>"))
VITAZSTVA
=OFFSET(STATY;;3)
=POSUN(STATY;;3)
ZAPASY
=OFFSET(STATY;;2)
=POSUN(STATY;;2)
Alebo KT + dátový model.
Príklad
Som len na mobile. Tak len zbežne. PF je Podmienené formátovanie. Milión radkov som si všimol tuším na posuvníku. Normálne sa tam posuvníkom nedostanete. Ako potvrdenie je veľkosť suboru. Kameň úrazu nieje Definovaný názov, ale ten maticový vzorec v stĺpci A.
Odpoveď môže byť všeličo. Luu sa neunúva upresniť, čo tým myslela.
AB a BA sú rôzne alebo je to to isté? Ak budem robiť Športku, tak kombinácia 6,16,26,36,46 je predsa to isté ako 36,6,46,16,26. Ale heslo je predsa niečo úplne iné.
Je viac členov ako miest? Teda napr. na 3 miesta vylúskať 26 písmen? Alebo len 3?
Za výsledok je považovaný až vtedy ak dosiahne max počet? (A vs ABC pri maxime 3)
"bez opakování" znamená čo? Že nemôže byť AA? Alebo AB, BA?
Podľa toho čo potrebujete, sú rozdiely totiž veľké.
A A A
B B B
C C C
AA AB AB
AB AC AC
AC BA BC
BA BC ABC
BB CA
BC CB
CA ABC
CB ACB
CC BAC
AAA BCA
AAB CAB
AAC CBA
ABA
ABB
ABC
ACA
ACB
ACC
BAA
BAB
BAC
BBA
BBB
BBC
BCA
BCB
BCC
CAA
CAB
CAC
CBA
CBB
CBC
CCA
CCB
CCC
Problém je Key:=Range(). Tam nemôžete dávať všetky stĺpce, ale iba stĺpec A, veď podľa neho chcete radiť.
Úprava aj iných častí:
Sub Uprava_exportu()
Dim Riadkov As Integer
Dim Oblast As Range
'
'upravuje export z georga rovno do excelu
'tu sa upraví podľa potreby a toto sa prenesie do zošita môj dom xxxx
'+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
With ActiveWorkbook.ActiveSheet
'Počet obsadených riadkov
Riadkov = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
If Riadkov = 0 Then MsgBox "Žiadne dáta.", vbExclamation: Exit Sub
'Prehádže a vymaže stĺpce tak, aby zodpovedali hlavičke v liste "hosp"
'Vloží hlavičku podľa hosp
.Range("A1:J1").Value = Array("Dátum", "účet", "Text z výpisu", "Názov protiúčtu z výpisu", "Protiúčet z výpisu", "VS", "Popis z výpisu", "analytika", "Užívateľ / môj popis", "")
'-------- Triedenie ------------
'od 1. do 31.
'určíme oblasť triedenia
Set Oblast = .Cells(2, 1).Resize(Riadkov, 9)
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=Oblast.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Oblast '(oblast)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
'**** KUF ******************************
End Sub
1. Odstráňte maticovosť toho vzorca. To bude kameň úrazu.
Ďalej už iba poznámky:
2. Dúfam, že nezoraďujete aj list HARMONOGRAM.
3. Veľkosť súboru je daná "použitím" milióna riadkov. Stavím ľavú topánku, že toľko riadkov nepoužívate.
4. Vzorec v definovanom názve oblastVYHLEDAVANI divne používa zbytočné množstvo MATCH/POZVYHLEDAT.
5. Vzorec v A neošetruje možnosť nesprávneho zadania čísla mesiaca, treba použiť inak to IFERROR.
6. Ak má súbor použiť ktokoľvek s iným ako CZ Office, treba nahradiť
HODNOTA.NA.TEXT($D2;"RRMMDD")
za
ZPRAVA(ROK($D2);2)&HODNOTA.NA.TEXT($D2;"MMDD")
Lebo "RRMMDD" pozná iba CZ. Také SK, EN to má "YYMMDD"
7. maličká úprava PF
Žiadna príloha tu nie je. Ak je to XLSM, musíte ho zabaliť do ZIP/RAR. Ak je príliš veľká, orežte rozumne data na <300 KB (nepamätám si presne veľkostný limit).
No nie je priložená ...
Treba makro ukázať.
EDIT:
Ak sa jedná o nahrávku makra importu súboru (tá staršia verzia), tak tam nastáva presne popisovaná situácia. Pri nahrávaní makra to urobí OK, ale nahrané makro hodí chybu na riadku
.CommandType = 0Zmažte ho, a je po ptákách.
O koľko prvkov sa jedná? Jedná sa o čísla, písmená, slová? Ukážku máte? Môže to byť makro? Makrom som to tu robil už niekoľkokrát. Musím pohľadať ...
S údajovým pruhom je komplikácia - nemožnosť nastavenia MAX na relatívnu bunku (ani pomocou def. názvu). Teda by ste musel nastaviť pre každú bunku samostatné PF, MIN na 0 ale MAX pre každú bunku samostatne na jej adekvátnu hodnotu v C.
Normálne to funguje. Ak by som to neotestoval, napíšem, že som netestoval. Tu som to doplnil ešte o nájdenie správneho adresára k Desktop, a preskočenie prepísania pôvodného súboru "novy.xlsx", ošetrenie chyby pri rušení naplánovania (ak makro bolo ukončené, premenná sa neuchovala, a nastane chyba).
Spúšťate to cez "nacas".
Ak čas už bol, nastaví sa ďalší deň. S časovačom v Exceli ale býval často problém, že sa spúšťal aj po zatvorení Excelu. Vyskúšajte. Na skúšanie si nedávajte 18:00:00 ale nejaký bližší čas
Pridal som aj to, aby sa ukladanie anulovalo po zatvorení súboru, a naopak, aby sa automaticky nastavilo pri otvorení súboru (toto si ale aktivujte až následne, najskôr si nastavte čas ako chcete). Prípadne sa automatická aktivácia dá urobiť na msgbox s otázkou na užívateľa. Ale potom treba zase vyriešiť, ako sa to vlastne bude spúšťať...
Do modulu:
Public New_Save_Time As Date
Sub SaveSheet()
ThisWorkbook.ActiveSheet.Copy
With ActiveWorkbook
With .Worksheets(1).UsedRange
.Value = .Value
End With
.SaveAs "C:\Users\baby\Desktop\novy.xlsx"
.Close False
End With
nacas
End Sub
Sub nacas()
New_Save_Time = Date + TimeValue("18:00:00")
If New_Save_Time < Now Then New_Save_Time = New_Save_Time + 1
Application.OnTime New_Save_Time, "SaveSheet"
End Sub
Sub Cancel_Schedule()
Application.OnTime EarliestTime:=New_Save_Time, Procedure:="SaveSheet", Schedule:=False
End Sub
Do modulu Tento_zošit:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Cancel_Schedule
End Sub
Private Sub Workbook_Open()
' nacas
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.