< návrat zpět

MS Excel


Téma: seřazení řádků podle data s různým formátem data rss

Zaslal/a 8.8.2014 9:54

Ahoj potřeboval bych poradit s problémem seřazení řádků s datumy.
Datumy jsou ve sloupci B
v některých řádcích mám datum ve formátu "1.2.2014" a v jiných ve formátu "5.6. - 13.5.2014" když použiju toto makro

Sub seradit()
' seradit Makro
Sheets("ENPPavS").Sort.SortFields.Clear
Sheets("ENPPavS").Sort.SortFields.Add Key:=Range("B13:B100"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"leden,únor,březen,duben,květen,červen,červenec,srpen,září,říjen,listopad,prosinec", DataOption:=xlSortTextAsNumbers
With Sheets("ENPPavS").Sort
.SetRange Range("B13:R100")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

tak mi to sice hodnoty seřadí ale data ve formátu "5.6. - 13.5.2014" to neseřadí a dá na konec

vezkoušel jsem teda načíst hodnoty do pole a ty upravit pomocí funkce na zkrácení data tak, aby byly všechny ve stejném formátu

Sub SeraditData()
' Řadí data

Dim datum() As String
Dim i As Long
Dim pocetRadku As Long

pocetRadku = PrvniPrazdnyRadek - 13
ReDim datum(1 To pocetRadku)

For i = 1 To PrvniPrazdnyRadek - 13
datum(i) = zkratitDatumC(Range("B12").Offset(i).Value())
Debug.Print datum(i)
Next i
End Sub

nevím ale, jak mám data v poli seřadit a navíc opět vypsat seřazené řádky, ale s původními hodnotami tak, aby se mi například datum ve formátu "5.6. - 13.5.2014" nepředělal jen na 13.5.2014. zkoušel jsem nějak aplikovat funkci zkratitDatumC do prvního příkladu ale tam je to zadané jako pole a nevím jak to zapsat, aby se ta funkce použila na každou buňku z pole a také nevím zda by to také neovlivnilo celkový výstup, který musí zůstat v nezměněném formátu.

Děkuji všem co mi ulehčí mé trápení.

Zaslat odpověď >

Strana:  1 2   další »
#020955
avatar
a co tak si makrom vytvorit 2 pomocne stlpce kde bude zaciatok a koniec

resp. kde bude len jeden datum tak budemat Od 13.5.2014 Do 13.5.2014

a kde budu dva datumy tak bude od 5.6.2014 Do 13.5.2014

a nakoniec len zoradite stlpec Od

.... toto riesenie by vam nestacilo?citovat
#020957
avatar

Palooo napsal/a:

a co tak si makrom vytvorit 2 pomocne stlpce kde bude zaciatok a koniec

resp. kde bude len jeden datum tak budemat Od 13.5.2014 Do 13.5.2014

a kde budu dva datumy tak bude od 5.6.2014 Do 13.5.2014

a nakoniec len zoradite stlpec Od

.... toto riesenie by vam nestacilo?


bohužel ne musí to pracovat pouze s jedním sloupcem tak jak to je.citovat
#020958
avatar
urobil som makro na sortovanie

ale nieje dokoncene!!!
treba tam dorobit:
Private Function aUpravit(ByVal aValue As Variant) As Variant
If aValue Like "*-*" Then
aUpravit = aValue
Else
aUpravit = aValue
End If
End Function


to znamena ked najde datum kde sa nachaza "-" tak ten datum treba upravit na nejaky startovny aky vam vyhovuje

... ale verim tomu ze tam bude viac bordelu tak som to ani neupravoval
... dalsia vec toto makro zoraduje podla prveho stlpca

chceto prilohu
Příloha: zip20958_sort.zip (16kB, staženo 28x)
citovat
#020960
avatar
Jen poznámka: Když makro přidá 2 sloupce, kopíruje do nich datumy, (inteligentně rozdělí ty s čas.úsekem), seřadí, zase ty 2 sloupce odebere, jak to může ovlivnit konečný výstup?citovat
#020962
avatar

Dingo napsal/a:

Jen poznámka: Když makro přidá 2 sloupce, kopíruje do nich datumy, (inteligentně rozdělí ty s čas.úsekem), seřadí, zase ty 2 sloupce odebere, jak to může ovlivnit konečný výstup?


no neovlivni ho nijak ale mne islo o to urobit to bez makra :) kedze v poslednej dobe je tu dost obluba nepouzivat makra :)citovat
#020963
avatar
Ta poznámka směřovala na Adosl.citovat
#020964
avatar
tu som este dorobil to opravovanie datumu ale ked bude 5.5 - 4.5.2014 .... tak k tomu priradi 2014 rok a nie 2013 ... to sa mi uz nechcelo dorabat :)
Příloha: zip20964_sort2.zip (17kB, staženo 28x)
citovat
#020965
Opičák

Palooo napsal/a:

tu som este dorobil to opravovanie datumu ale ked bude 5.5 - 4.5.2014 .... tak k tomu priradi 2014 rok a nie 2013 ... to sa mi uz nechcelo dorabat :)Příloha: 20964_sort2.zip


u mě je to funkční až po úpravě řádku ve funkci
místo teček musím použít lomítko
aUpravit = StrOd(0) & "/" & StrOd(1) & "/" & aRok


jinak samozřejmě super. já jsem zkusil jinak, je to taky funkční, trochu složitější.

přechod z roku na rok jsem taky neřešil
Příloha: zip20965_trideni-datumu.zip (16kB, staženo 32x)
citovat
#020966
avatar
Opičák: hups to ma nenapadlo :)

tak potom idealnejsie to bude takto:
aUpravit = CDate(StrOd(0) & "." & StrOd(1) & "." & aRok)citovat
#020993
avatar

Opičák napsal/a:

Palooo napsal/a:tu som este dorobil to opravovanie datumu ale ked bude 5.5 - 4.5.2014 .... tak k tomu priradi 2014 rok a nie 2013 ... to sa mi uz nechcelo dorabat :)Příloha: 20964_sort2.zip

u mě je to funkční až po úpravě řádku ve funkci
místo teček musím použít lomítko
aUpravit = StrOd(0) & "/" & StrOd(1) & "/" & aRok

jinak samozřejmě super. já jsem zkusil jinak, je to taky funkční, trochu složitější.

přechod z roku na rok jsem taky neřešilPříloha: 20965_trideni-datumu.zip


Opičáku díky! Tohle je přesně to co jsem potřeboval a funguje to jak jsem chtěl, až na ten přechod mezi roky, ale ten se mi tam stejně na 99,8% neobjeví. Skvělá práce a ostatním také díky za snahu pomoci.citovat

Strana:  1 2   další »

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