VBA yordamida Excel ish varag'ingizdagi sanalarni qanday tuzatish mumkin

Hozir ulashing:

Bizga 12.26.2016 yoki 26/12/2016 (Buyuk Britaniya formati) sifatida taqdim etilgan elektron jadvallardagi sanalarni qanchalik tez-tez olamiz, faqat sana noto'g'ri yoki 26 oy yo'qligini aytish uchun? Ushbu maqola TRIM, LEFT, RIGHT va MID funksiyalaridan foydalangan holda VBA bilan sanalarni aniqlashni o'rganadi.

Maqolada o'quvchi dasturchi tasmasi ko'rsatilgan va VBA muharriri bilan tanish deb taxmin qilinadi. Agar yo'q bo'lsa, Google "Excel Developer Tab" yoki "Excel Code Window".

Ushbu mashqdagi xlsm ni yuklab olish mumkin Bu yerga.

Bizning muammomiz emas!

Bir sanaga 7 kun qo'shishMuammoni hal qilish uchun eng yaxshi joy - manba. Biroq, hech qanday ishontirish ish haqi bo'limini bu holatda 12.26.1994 haqiqiy sana emasligiga ishontira olmaydi (agar ba'zi Sharqiy Evropa mamlakatlari uchun kompyuterning Boshqaruv panelida shunday tuzilgan bo'lsa).

Aslida, biz uni mashinada o'qib bo'lmasligini isbotlashimiz mumkin. Masalan, sanaga 7 kun qo'shish:

"=01.01.2017 + 7" = #VALUE. 

"=2017.01.01 + 7" = #VALUE.

holbuki…

"=2017-01-01 + 7" = 2017/01/08.

Faraz qilaylik, ular bu ularning muammosi emasligini aytishadi.

Sana formatlari

Biz aniqlashimiz kerak bo'lgan birinchi narsa bu sana AQSh yoki xalqaro formatdami.AQSh formatidagi sana

Bizning misolimiz shuni ko'rsatadiki, biz AQShda foydalanishni ko'rib chiqamiz, ya'ni xalqaro formatdagi DMY emas.

Manbani o'rnatganimizdan so'ng, Excel xalqaro miqyosda yoki AQShda ularni tushunishi uchun ma'lumotlar formatlarini o'zgartirishimiz kerak.

Buning eng yaxshi usuli sanani yyyymmdd ga o'zgartirish, bu hech qanday malaka talab qilmaydigan formatdir.

jarayoni

Biz hujjatdagi har bir qatorni aylanib chiqamiz va manba mamlakatiga ko'ra sanani "to'g'rilash" funktsiyasini chaqiramiz. Sana tuzatilgandan so'ng, biz Xodimning yoshini hisoblaymiz.

Kodeks

Quyidagi kodni yangi modulga nusxalash:

Option Explicit

Sub Main()
    Dim strNewFormat As String
    Dim strDate As String
    Sheets("Main").Range("B4").Select
    
    'Cycle through the sheet rows, using IDNumber as an anchor
    'to prevent a premature halt caused by a blank date of birth
    Do While ActiveCell > ""
        If ActiveCell.Offset(0, 2) > "" Then
            strDate = ActiveCell.Offset(0, 2)
            
            'Remove leading or trailing spaces
            strDate = Trim(strDate)
            
            'Call the function
            strNewFormat = ReformatDate(strDate, "USA")
            
            'Write the result from the function ReformatDate to a new column
            ActiveCell.Offset(0, 3) = strNewFormat
            
            'Determine age by subtracting the previous column from today's date
            ActiveCell.Offset(0, 4) = "=(NOW()-RC[-1])/365.25"
            
            'Convert to intger, thus lopping off decimal places
            ActiveCell.Offset(0, 4) = Int(ActiveCell.Offset(0, 4))
        End If
        Range("B" & ActiveCell.Row + 1).Select
    Loop
End Sub

Function ReformatDate(sDate As String, sSource As String)
    Dim yyyy, mm, dd As String
    yyyy = Right(sDate, 4)
    If sSource = "USA" Then
        mm = Left(sDate, 2)
        dd = Mid(sDate, 4, 2)
    Else
        mm = Mid(sDate, 4, 2)
        dd = Left(sDate, 2)
    End If
    ReformatDate = yyyy & "-" & mm & "-" & dd
End Function

Shaklingizga tugma qo'shing va uni Sub Main-ga tayinlang.

Ogohlantirish

Modulingizga juda ko'p murakkab kod qo'shishdan oldin, Excel katta ilovalarni ishlab chiqishda har doim ham barqaror emasligini va ko'pincha shikastlangan kodni o'zi tiklay olmasligini yodda tuting. Natijada sizning yagona nusxangiz buzilgan bo'lishi mumkin, chunki buzilish "Saqlash" da sodir bo'ladi.

Tez-tez zaxira nusxasini yarating va tuzatish uchun vositadan foydalaning Excel faylining buzilishi.

Muallif kirish:

Feliks Xuker ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc ta'mirlash rar fayl buzilishi va sql-ni tiklash dasturiy mahsulotlar. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com

Hozir ulashing:

Comments are closed.