在I11:X11中设置了数据,我想根据I11:X11中包含的数据将I12:I12的公式复制到I13:X20中。
从I11开始,如果包含某个值,则说TEST,然后要将该范围的行增加到下一个列,即J11;如果是J11 <> TEST,则将J12:X12复制到J13:X20。
还要基于H13:H20列中的标志位置跳过整个逻辑,例如,如果H13 = Y,则跳至下一行。
添加屏幕截图以进一步说明问题。 条件应该从范围I11:X11中的第一个成员开始,如果遇到第一个成员<> TEST直到T11,那么它应该从该范围开始复制。在这种情况下,它首先在L11遇到<> TEST成员,然后应该从L12:T12复制到L13:T24,然后从V12:X12复制到V13:X13。此外,此逻辑应在H列中包含的标志上起作用。如果此H列包含Y,则以上逻辑不应在该行中粘贴,此粘贴活动应一直持续到H列中从H13开始的最后一个值。 I11:T11中的条件值可以在TEST和任何其他值之间改变,而不能再改变。
想要通过使用VBA代码的按钮单击来实现这一点。
添加代码,但仅限于固定列H值和固定行值。
Sub CopyOnCondition1()
Dim sh1 As Worksheet, c As Range
Set sh1 = Worksheets("SheetNameHere") 'change the sheetname
For Each cel In sh1.Range("I11:T11")
If Not cel.Value = "TEST" Then
sh1.Range(Cells(12, cel.Column), Cells(12, 20)).Copy
sh1.Range(Cells(13, cel.Column), Cells(24, 20)).PasteSpecial xlPasteFormulas
End If
Next
For Each cel In sh1.Range("H13:H24")
If cel.Value = "Y" Then sh1.Range("I" & cel.row & ":T" & cel.row).ClearContents
Next
End Sub
答案 0 :(得分:0)
从问题中我可以理解,我认为您正在寻找这样的东西:
Sub CopyOnCondition1()
Dim sh1 As Worksheet, c As Range
Set sh1 = Worksheets("SheetNameHere") 'change the sheetname
For Each cel In sh1.Range("I11:T11")
If Not cel.Value = "TEST" Then
sh1.Range(Cells(12, cel.Column), Cells(12, 20)).Copy
sh1.Range(Cells(13, cel.Column), Cells(24, 20)).PasteSpecial xlPasteFormulas
End If
Next
For Each cel In sh1.Range("H13:H24")
If cel.Value = "Y" Then sh1.Range("I" & cel.row & ":T" & cel.row).ClearContents
Next
End Sub
首先它将粘贴到完整的范围中。然后,它检查H
是否具有Y
,如果是,则它将从该行中删除公式。