Si të rregulloni datat në fletën tuaj të punës në Excel me VBA

Sa shpesh marrim data në fletëllogaritëse që na janë dhënë si 12.26.2016, ose 26/12/2016 (format në Mbretërinë e Bashkuar), vetëm për t'u thënë se data është e pavlefshme ose nuk ka muaj 26? Ky artikull eksploron fiksimin e datave me VBA, duke përdorur funksionet TRIM, LEFT, RIGHT dhe MID.

Artikulli supozon se lexuesi ka të shfaqur shiritin e Zhvilluesit dhe është i njohur me Redaktorin VBA. Nëse jo, ju lutemi Google "Excel Developer Tab" ose "Excel Code Window".

Xlsm në këtë ushtrim mund të shkarkohet këtu.

Nuk është problemi ynë!

Shtimi i 7 ditëve në një datëVendi më i mirë për të zgjidhur një problem është në burim. Megjithatë, asnjë masë bindjeje nuk mund ta bindë departamentin e listës së pagave në këtë rast se data 12.26.1994 nuk është një datë e vlefshme (përveç nëse është konfiguruar kështu në panelin e kontrollit të kompjuterit për disa vende të Evropës Lindore).

Në fakt mund të vërtetojmë se nuk është i lexueshëm nga makineri. Për shembull, duke shtuar 7 ditë në një datë:

"=01.01.2017 + 7" = #VALUE. 

"=2017.01.01 + 7" = #VALUE.

ndërsa…

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

Le të supozojmë se ata sugjerojnë se nuk është problemi i tyre.

Formatet e datës

Gjëja e parë që duhet të konstatojmë është nëse data është në formatin amerikan apo ndërkombëtar.Data në formatin USA

Shembulli ynë e bën të qartë se po shikojmë përdorimin e SHBA-së, dmth. MDY sesa formatin ndërkombëtar DMY.

Pasi të kemi vendosur burimin, duhet të ndryshojmë formatet e të dhënave në mënyrë që Excel të mund t'i kuptojë ato, qoftë ndërkombëtarisht apo në SHBA.

Mënyra më e mirë për ta bërë këtë është të ndryshoni datën në yyyymmdd, një format që nuk ka nevojë për kualifikim.

Procesi

Ne do të kalojmë në çdo rresht në dokument, duke thirrur një funksion për të "korrigjuar" datën sipas vendit të burimit. Pasi të korrigjohet data, ne do të llogarisim moshën e punonjësit.

Kodi

Kopjoni kodin e mëposhtëm në një modul të ri:

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

Shtoni një buton në formularin tuaj dhe caktojeni atë në Sub Main.

caveat

Përpara se të shtoni shumë kod kompleks në modulin tuaj, këshillohuni që Excel nuk është gjithmonë i qëndrueshëm në zhvillimin e aplikacioneve kryesore dhe shpesh nuk është në gjendje të rikuperojë vetë kodin e dëmtuar. Rezultati mund të jetë prishja e kopjes tuaj të vetme pasi korrupsioni ndodh në "Ruaj".

Bëni kopje rezervë shpesh dhe përdorni një mjet për të rregulluar Dëmtimi i skedarit Excel.

Hyrje e autorit:

Felix Hooker është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparim rar paraqesin korrupsionin dhe produkte softuerike për rikuperimin sql. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.