2017-11-09 2 views
2

다른 열의 필터를 사용하여 한 열에서 다른 열로 수식을 복사하여 붙여 넣는 데 어려움을 겪고 있습니다.Excel에서 VBA를 통해 필터링 된/보이는 셀에 수식을 복사/붙여 넣기하는 방법

52 개의 열이있는 테이블이 있습니다 (매월 행 수가 변경됩니다). AW (# 49) 열에 필터를 적용했습니다. 그것은 CTD만을 보여줍니다. 이 필터를 적용한 후 수식을 AH 열에서 AG 열로 복사해야합니다. 물론 필터링 된/보이는 셀에만 적용해야합니다. 필자가 작성한 코드는이 수식을 열 AG의 모든 셀에 복사/붙여 넣기하는 것입니다 (열 AW의 필터는 고려하지 않습니다). 또 다른 문제점은 열 AW에 필터를 적용 할 때 제 1 가시 행이 항상 시간 AH2 일 필요는 없지만 예를 들어, 일 수있다. AH15 또는 뭐든간에. 나는 이것이 동적 인 해결책을 통해 피할 수 있다고 생각한다. 불행히도 나는 그것을 할 수있는 방법이 없습니다.

이후 다른 필터의 필터에도 동일하게 적용하고 싶습니다.

미리 알려 주시면 감사하겠습니다.

Sub ApplyFilterInColumnAW() 

Sheets("DATA").Select 
ActiveSheet.ListObjects("tb_DATA").Range.AutoFilter Field:=49, Criteria1:="CTD" 
Range("AG2").Select 'dynamic solution? 
ActiveCell.FormulaR1C1 = "=[@[Service/Log Formula]]" 'header name of column AH 

End Sub 
+0

"SpecialCells (xlCellTypeVisible)"을 사용할 수 있습니다. Range.Offset (1, 0) .SpecialCells (xlCellTypeVisible) .Formula = "= [@ [Service/Log Formula]]" –

답변

3

Range.CopyRange.Paste 만 볼 수 세포에서 작동 : :)

이 내 코드입니다. 내 예제에서는 열 머리글을 사용하여 열의 셀을 대상으로 지정합니다.

Sub ApplyFilterInColumnAW() 
    Const TagetColumnLabel = "Test" 
    Dim tbl As ListObject 
    Set tbl = Sheets("DATA").ListObjects("tb_DATA") 

    With Sheets("DATA") 
     .ListObjects("tb_DATA").Range.AutoFilter Field:=49, Criteria1:="CTD" 
     tbl.ListColumns(TagetColumnLabel).DataBodyRange.FormulaR1C1 = "=tb_DATA[[#This Row],[Service/Log Formula]]" 
    End With 
End Sub 
+0

친애하는 Thomas 씨, 도와 주셔서 대단히 감사합니다. ! 이 솔루션은 훌륭하게 작동합니다! 정확히 필요한 것! 고마워요! :) –

관련 문제