我有一张名为Progress的工作表,其中有一个范围(C5:C56)。 在C5中,我进入了Wk1。 在C6中,我进入了Wk2。 此序列一直持续到Wk52在C56中。
在D5:E5中我有引用命名范围的公式。 在D5中,我有公式= COUNT(Wk1CountTrainingSessions)。 在E6中我有公式= Wk1HrsTraining
我需要一个宏将范围D5:E5复制到D6:E6,然后将范围D6:E6中的公式中的命名范围从Wk1开始更改为从Wk2开始。
我希望能够在接下来的每一周培训中重复这一点。 例如,对于Wk3,宏将复制D6:E6到D7:E7,并将公式中的命名范围更改为以Wk3开头。
我尝试了这段代码并且无法正常工作
Sub ChangeNamedRangesOnProgressSheet()
Dim RangeName As Name
Dim RangeName2 As String
Dim NewRangeName As String
Dim j As Range
Dim ws As Worksheet
Dim Progress As Worksheet
Worksheets("Progress").Range("D5:E5").Copy _
Destination:=Worksheets("Progress").Range("D6:E6")
''''' Delete invalid named ranges
For Each RangeName In ws.Names
If InStr(1, RangeName.RefersTo, "#REF!") > 0 Then
RangeName.Delete
End If
Next RangeName
j = Range("C6")
For Each RangeName In Worksheet.Progress
If InStr(1, RangeName, "Wk1", 1) > 0 Then
NewRangeName = Replace(RangeName.Name, "Wk1", j)
RangeName2 = Replace(RangeName, "='Wk1'", j)
Next RangeName
j = j.Offset(1)
MsgBox "Done"
我也尝试过这个代码,类似于下面psot评论中的Karthicks建议。它不起作用
Sub test()
Dim i As Long
Dim CountTrainingSessions As String
Dim HrsTraining As String
Dim Wk As String
For i = 5 To 56
Range("D" & i).Value = Range("Wk" & i & "CountTrainingSessions").Count
Range("E" & i).Value = Range("Wk" & i & "HrsTraining")
Next i
End Sub
答案 0 :(得分:0)
希望你能找到这个
Sub test()
For i = 5 To 56
Range("D" & i).Value = Application.WorksheetFunction.Count(Range("C" & i) & CountTrainingSessions)
Range("E" & i).Value = Application.WorksheetFunction.Count(Range("C" & i) & HrsTraining)
Next i
End Sub
如果您需要配方,请尝试以下
Sub test()
Dim i As Long
Dim CountTrainingSessions As String
Dim HrsTraining As String
For i = 5 To 56
Range("D" & i).Formula = "=Count(" & Range("C" & i) & "CountTrainingSessions)"
Range("E" & i).Formula = "=Count(" & Range("C" & i) & "HrsTraining)"
Next i
End Sub