【发布时间】:2021-09-24 17:52:58
【问题描述】:
我正在尝试根据 For 循环为 i 行选择多个列。这个想法是检查特定单元格是否符合标准。如果是这样,请将与该特定段关联的公式复制到与该观察相同的行。
即:
对于 i = 13
如果 O(i) = 段 A,将公式从 $P$1 复制并粘贴到 P(i)
与
将 T1:CV1 中的公式复制并粘贴到 T(i) : CV (i)
(请记住,T 和 CV 之间有隐藏的列,我认为这些与结果没有任何关系,因为它们是隐藏的,但无论如何都想注意。)
到目前为止,我已经尝试使用以下代码: Range("T" & i : "CV" & i).Select 。我知道这是错误的,但只是想给出一个想法。完整的代码附在下面。任何帮助表示赞赏!
Sub mastersheet()
Dim i As Integer
Sheets("Master").Select
For i = 13 To 400
If Range("O" & i).Value = "A" Then
Range("P1").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T1:CV1").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "B" Then
Range("P2").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T2:CV2").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "C" Then
Range("P3").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T3:CV3").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "D" Then
Range("P4").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T4:CV4").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "E" Then
Range("P5").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T5:CV5").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "F" Then
Range("P6").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T6:CV6").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "G" Then
Range("P7").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T7:CV7").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "H" Then
Range("P8").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T8:CV8").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
ElseIf Range("O" & i).Value = "I" Then
Range("P9").Select
Selection.Copy
Range("P" & i).Select
ActiveSheet.Paste
Range("T9:CV9").Select
Selection.Copy
Range("T" & i : "CV" & i).Select
ActiveSheet.Paste
End If
Next i
End Sub
【问题讨论】:
-
请尝试
Range("T" & i ":CV" & i).Select, but no need to any selection in what you try doing. Selecting only consumes Excel resources and does not bring any benefit. Try usingRange("T1:CV1").Copy Range("T" & i & ":CV" & i)`。在一排。 -
或
Range("P1").Copy Destination:=Range("P" & i)。
标签: excel vba for-loop if-statement