复制粘贴行范围(动态)并基于等于X else SKIP的列值粘贴

时间:2019-08-06 09:15:59

标签: excel vba excel-formula

复制粘贴行范围(动态)并基于等于X else SKIP的列值进行粘贴。

第11行中有条件,即I11:T11,如果I11包含TEST,请跳至下一列,直到它不等于TEST,然后从该单元格的下一行中选择范围,例如M12:T12,并在粘贴时检查H列中的值,如果它包含X,则仅粘贴其他跳过。 H列中的数据将从H12开始到H列的最后一行。

请参考所附的屏幕截图,并遵循以下准则:

  • 在H列中有一个Flag值,如果它包含X,则应去检查I11:T11,如果它找到了成员<> TEST,则从该单元格中复制范围,在这种情况下为L12 :T12,并且仅粘贴在H列的值为X的行中,而不应该粘贴在H列包含Y的行中。

  • H列中的其他值将是动态的,即上述逻辑应考虑H13直到H列中的最后一行。 另外,还有从V开始的额外列,无论如何,应该根据H列逻辑标志值复制V12:X12和Z12:AB12中的值。

  • FYI,行中已有值,H列值为Y,因此无法清除这些值。

enter image description here

想要通过使用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

enter image description here

0 个答案:

没有答案