Ako opraviť dátumy v pracovnom hárku programu Excel pomocou VBA

Ako často dostaneme dátumy v tabuľkách dodaných k nám 12.26.2016 alebo 26/12/2016 (formát UK), len aby sme povedali, že dátum je neplatný alebo nie je 26. mesiac? Tento článok skúma opravenie dátumov pomocou VBA pomocou funkcií TRIM, LEFT, RIGHT a MID.

V článku sa predpokladá, že čitateľ má zobrazenú pásku pre vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.

XLSM v tomto cvičení je možné stiahnuť tu.

Nie náš problém!

Pridanie 7 dní k dátumuNajlepšie vyriešite problém pri zdroji. Avšak v tomto prípade nemôže nijaké presvedčenie presvedčiť mzdové oddelenie, že 12.26.1994. XNUMX. XNUMX nie je platným dátumom (pokiaľ to nie je nakonfigurované v ovládacom paneli počítača pre niektoré východoeurópske krajiny).

V skutočnosti môžeme dokázať, že to nie je strojovo čitateľné. Napríklad pridanie 7 dní k dátumu:

"= 01.01.2017 + 7" = # HODNOTA. 

"= 2017.01.01 + 7" = # HODNOTA.

keďže…

„= 2017 + 01“ = 2017. 01. 08.

Predpokladajme, že naznačujú, že to nie je ich problém.

Formáty dátumu

Prvá vec, ktorú musíme zistiť, je, či je dátum v USA alebo v medzinárodnom formáte.Dátum vo formáte USA

Náš príklad objasňuje, že sa zameriavame na použitie v USA, teda na MDY, a nie na medzinárodný formát DMY.

Len čo sme vytvorili zdroj, musíme zmeniť dátové formáty, aby ich Excel mohol chápať, či už na medzinárodnej úrovni, alebo v USA.

Najlepším spôsobom, ako to urobiť, je zmeniť dátum na rrrrmmdd, formát, ktorý nevyžaduje žiadnu kvalifikáciu.

Proces

Budeme prechádzať každým riadkom v dokumente a volať funkciu na „opravu“ dátumu podľa krajiny zdroja. Po oprave dátumu vypočítame vek zamestnanca.

Kódex

Skopírujte nasledujúci kód do nového modulu:

Možnosť Explicitné Sub Hlavné () Dim strNewFormat ako reťazec Dim strDate ako reťazcové listy ("Hlavné"). Rozsah ("B4"). Vyberte možnosť „Prechádzať riadkami hárka s použitím IDNumber ako kotvy“, aby ste zabránili predčasnému zastaveniu spôsobenému prázdny dátum narodenia Vykonať Kým ActiveCell> "" Ak ActiveCell.Offset (0, 2)> "" Potom strDate = ActiveCell.Offset (0, 2) 'Odstrániť úvodné alebo koncové medzery strDate = Orezať (strDate)' Zavolajte funkciu strNewFormat = ReformatDate (strDate, "USA") 'Zapíše výsledok z funkcie ReformatDate do nového stĺpca ActiveCell.Offset (0, 3) = strNewFormat' Určí vek odpočítaním predchádzajúceho stĺpca od dnešného dátumu ActiveCell.Offset (0, 4) = "= (NOW () - RC [-1]) / 365.25" 'Konvertovať na celé číslo, a tak odrezať desatinné miesta ActiveCell.Offset (0, 4) = Int (ActiveCell.Offset (0, 4)) Koniec AkRange ("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" Potom mm = vľavo (sDate, 2) dd = stredný (sDate, 4, 2) El. Mm = stredný (sDate, 4, 2) dd = vľavo (sDate, 2) Koniec, ak ReformatDate = rrrr & "-" & mm & „-“ & Koncová funkcia ddd

Pridajte do formulára tlačidlo a priraďte ho k Sub Main.

Varovanie

Pred pridaním príliš zložitého kódu do modulu nezabudnite, že program Excel nie je pri vývoji hlavných aplikácií vždy stabilný a často nedokáže samotný poškodený kód obnoviť. Výsledkom môže byť poškodenie vašej jedinej kópie, pretože k poškodeniu dôjde v priečinku „Uložiť“.

Často zálohujte a opravte pomocou nástroja Poškodenie súboru programu Excel.

Úvod autora:

Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava rar poškodenie súboru a softvérové ​​produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S

Nechaj odpoveď

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *