cacodemon Mesaj tarihi: Nisan 21, 2015 Paylaş Mesaj tarihi: Nisan 21, 2015 Excel'de yaşadığım ilginç bir sorun var. Tarihlerde (01.01.2015 gibi) ilgili hücreler tarih formatında olsa bile bazı raporlar noktayı nokta ile değiştirmeden tarih formatını algılamıyor. Dolayısı ile filtreleme vb sıkıntılar ortaya çıkıyor. Bu sorun cepte kalsın, şimdi gelelim işlemlere. Bizim raporlarda tarihler 20150101 formatında. Ben tek bir makro ile bunu 01.01.2015 şekline sokuyorum (önce textocolumns, sonra concetanate). Fakat vba ile noktayı nokta ile değiştirmek yukardaki sorunumu çözmüyor. İllaki vba'dan çıkıp manuel find and replace yapmam gerekiyor. Kodlarda noktayı "/" ile değiştireyim dedim, bu sefer bazı satırlar 01/01/2015 şeklinde text, bazıları ise 01.01.2015 şeklinde date oluyor. Meraklısına makro aşağıda. Kaydettiğim gibi duruyor, temizlik yapmadım. Bir kolonu 20150101'den 20150131'e kadar doldurup deneyebilirsiniz. Sub tarihDuzeltme() Application.DisplayAlerts = False lr = Range("A65000").End(xlUp).Row ActiveCell.Offset(0, 0).Columns("A:A").EntireColumn.Select Selection.NumberFormat = "General" ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(0, -1).Columns("A:A").EntireColumn.Select Selection.TextToColumns Destination:=ActiveCell, DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 2), Array(4, 2), Array(6, 2)), TrailingMinusNumbers:= _ True ActiveCell.Offset(0, 3).Range("A1").Select ActiveCell.FormulaR1C1 = "Tarih" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1],""."",RC[-2],""."",RC[-3])" ActiveCell.Select Selection.AutoFill Destination:=ActiveCell.Range("A1:A" & lr) ActiveCell.Range("A1:A" & lr).Select ActiveCell.Columns("A:A").EntireColumn.Select ActiveCell.Activate Selection.Copy ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Application.CutCopyMode = False Selection.NumberFormat = "m/d/yyyy" ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell.Offset(0, -2).Columns("A:C").EntireColumn.Select ActiveCell.Activate Selection.Delete Shift:=xlToLeft ActiveCell.Offset(0, 0).Columns("A:A").EntireColumn.Select End Sub selection dolu biliyorum, vba işine yeni başladım o yüzden fazla vurmayın. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
ginaly Mesaj tarihi: Nisan 21, 2015 Paylaş Mesaj tarihi: Nisan 21, 2015 concatanate'i boşver, A column'da data olsun, destination da yine A olsun: Columns("A:A").Select Selection.TextToColumns Destination:=Range("A:A"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 5), TrailingMinusNumbers:=True Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
cacodemon Mesaj tarihi: Nisan 21, 2015 Konuyu açan Paylaş Mesaj tarihi: Nisan 21, 2015 haha büyü mü bu? koda bakıyorum şimdi. tamam delimited yapıyorsun da neye göre bölüyor? "TextQualifier:=xlDoubleQuote" mu? sonra nasıl birleşiyor falan? aklımda deli sorular. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
ginaly Mesaj tarihi: Nisan 21, 2015 Paylaş Mesaj tarihi: Nisan 21, 2015 büyü kısmı array (1,5)'de (: text'i DDMMYYYY formatına getirme ile alakalı bişey. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar