VBA将公式设置为不同工作表中的多列

我试图修复在不同的列下的多个工作表中的date,但我不知道如何。

Sub FixDate() Dim i As Long Sheets("Sheet1").Select For i = 2 To Range("N" & Rows.Count).End(xlUp).Row With Range("N" & i) .NumberFormat = "mm/dd/yy hh:mm" .Value = DateValue(.Value) End With Next i For i = 2 To Range("O" & Rows.Count).End(xlUp).Row With Range("O" & i) .NumberFormat = "mm/dd/yy hh:mm" .Value = DateValue(.Value) End With Next i Sheets("Sheet2").Select For i = 2 To Range("F" & Rows.Count).End(xlUp).Row With Range("F" & i) .NumberFormat = "mm/dd/yy hh:mm" .Value = DateValue(.Value) End With Next i End Sub 

我有4个工作表,需要修复不同列下的date。 请指教。

你可以拆分你的代码,使其具有一个将所有单元格格式修改为"mm/dd/yy hh:mm"的Sub,然后多次调用它并传递相关列(如String)和Worksheet对象。

注意 :不需要Select工作表来修改其单元格格式。

 Option Explicit Sub FixDate() ' call sub, pass column "N" and worksheet object "Sheet1" FixDatesInCol "N", ThisWorkbook.Worksheets("Sheet1") FixDatesInCol "O", ThisWorkbook.Worksheets("Sheet1") FixDatesInCol "F", ThisWorkbook.Worksheets("Sheet2") End Sub 

 Sub FixDatesInCol(Col As String, ws As Worksheet) Dim i As Long With ws For i = 2 To .Range(Col & .Rows.Count).End(xlUp).Row With .Range(Col & i) .NumberFormat = "mm/dd/yy hh:mm" .Value = DateValue(.Value) End With Next i End With End Sub 

或者像这样:

 Sub dates() Dim sShts As String Dim sCols As String Dim i As Integer Dim j As Integer sCols = "N;O;F" sShts = "1;1;2" For j = 0 To UBound(Split(sShts, ";")) Debug.Print j With Worksheets("sheet" & Split(sShts, ";")(j)) For i = 1 To .Range(Split(sCols, ";")(j) & Rows.Count).End(xlUp).Row With .Range(Split(sCols, ";")(j) & i) .NumberFormat = "mm/dd/yy hh:mm" .Value = DateValue(.Value) End With Next i End With Next j End Sub 

您可以通过编辑sCols和sShts来调整/添加工作表/列。