Paano Ayusin ang Mga Petsa sa Iyong Excel Worksheet gamit ang VBA

Ipamahagi ngayon:

Gaano kadalas tayo nakakakuha ng mga petsa sa mga spreadsheet na ibinibigay sa amin bilang 12.26.2016, o 26/12/2016 (format ng UK), masasabi lamang na ang petsa ay hindi wasto o walang buwan 26? Sinusuri ng artikulong ito ang pag-aayos ng mga petsa sa VBA, gamit ang TRIM, LEFT, RIGHT at MID function.

Ipinapalagay ng artikulo na ang mambabasa ay ipinapakita ang Developer ribbon at pamilyar sa VBA Editor. Kung hindi, mangyaring Google "Excel Developer Tab" o "Excel Code Window".

Maaaring ma-download ang xlsm sa pagsasanay na ito dito.

Hindi Ang aming Suliranin!

Pagdaragdag ng 7 Araw Sa Isang PetsaAng pinakamagandang lugar upang malutas ang isang problema ay ang mapagkukunan. Gayunpaman, walang halaga ng paghimok ang makumbinsi ang departamento ng pagbabayad sa kasong ito na ang 12.26.1994 ay hindi isang wastong petsa (maliban kung naka-configure sa Control Panel ng computer para sa ilang mga bansa sa Silangang Europa).

Sa katunayan mapatunayan natin na hindi ito nababasa ng makina. Halimbawa, pagdaragdag ng 7 araw sa isang petsa:

"=01.01.2017 + 7" = #VALUE. 

"=2017.01.01 + 7" = #VALUE.

samantalang…

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

Ipagpalagay natin na iminumungkahi nila na hindi ito ang kanilang problema.

Mga Format sa Petsa

Ang unang bagay na dapat nating tiyakin ay kung ang petsa ay nasa USA o Internasyonal na format.Petsa Sa Format ng USA

Nilinaw ng aming halimbawa na tinitingnan namin ang paggamit ng USA, ie MDY kaysa sa international format DMY.

Kapag naitatag na namin ang mapagkukunan, kailangan naming baguhin ang mga format ng data upang maunawaan ng Excel ang mga ito, maging internasyonal o sa USA.

Ang pinakamahusay na paraan upang magawa ito ay baguhin ang petsa sa yyyymmdd, isang format na hindi nangangailangan ng kwalipikasyon.

Ang Proseso

Ikot namin ang bawat hilera sa dokumento, na tumatawag sa isang pagpapaandar upang "iwasto" ang petsa ayon sa pinagmulang bansa. Kapag naayos ang petsa, makakalkula namin ang edad ng empleyado.

Ang Kodigo

Kopyahin ang sumusunod na code sa isang bagong module:

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

Magdagdag ng isang pindutan sa iyong form, at italaga ito sa Sub Main.

Caveat

Bago magdagdag ng labis na kumplikadong code sa iyong module, payuhan na ang Excel ay hindi palaging matatag sa pangunahing pagpapaunlad ng aplikasyon, at madalas na hindi makuha ang nasirang code mismo. Ang resulta ay maaaring ang katiwalian ng iyong nag-iisang kopya dahil nangyari ang katiwalian sa "I-save".

Madalas na mag-back up at magkaroon ng paggamit ng isang tool upang ayusin Katiwalian sa file ng Excel.

Panimula ng May-akda:

Si Felix Hooker ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang magkumpuni rar magsampa ng katiwalian at mga produkto ng software sa pag-recover ng sql. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.