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!
Ang 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.
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
