需要在Excel上将数字转换为日期

问题描述 投票:0回答:1

我认为我们需要 VBA 来做到这一点,但是: 我需要 A 列中的所有内容都成为工作表编号后面的日期。

我有 12 张名为 jan - fev - mar - abr ..... - dez (葡萄牙语月份名称)的表格 在工作表“jan”中,我需要在 A 列中输入的所有内容都成为 01 月的日期,例如:

我在a15中输入5,它变成05/01/2024(日/月/年) 如果我在 abr(四月) 表的 a17 中输入 12,它就会变成 12/04/2024 但我不知道怎么办!

我已经尝试使用聊天 gpt vba 但它不起作用。

excel vba excel-formula excel-2010
1个回答
0
投票

ThisWorkbook
代码表中输入以下代码:

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim rg As Range, rgInt As Range
    Dim months, monthNum As Long, lastDay As Long, yr As Long
    
'Change if your abbreviations are different
months = Array("jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez")

    Set rgInt = Intersect(Target, Sh.Columns(1))
    If Not rgInt Is Nothing Then
        Application.EnableEvents = False
        With Application.WorksheetFunction
            monthNum = .Match(Sh.Name, months, 0)
            yr = Year(Date)
            lastDay = Day(DateSerial(yr, monthNum + 1, 0))
            
'ensure day number is valid

            For Each rg In rgInt
                If rg.Value >= 1 And rg.Value <= lastDay Then
                    rg.Value = DateSerial(yr, monthNum, rg.Value)
                Else
                    rg.ClearContents
                End If
            Next rg
        End With
        Application.EnableEvents = True
    End If
          
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.