2016-07-28 2 views
1

필터링 및 일부 숨겨진 열이있는 스프레드 시트에서 특정 행을 복사하여 붙여 넣으려고합니다. 어떤 이유로, 필터링 기능이 켜져있을 때 Excel은 숨겨진 열을 복사하지 않고 행을 붙여 넣을 때 숨겨진 열을 생략합니다.필터링 및 숨겨진 열이있는 행을 복사하여 붙여 넣는 방법은 무엇입니까?

이 문제의 해결 방법이 있습니까? 숨겨진 셀을 포함하여 선택 영역의 모든 셀을 복사하는 비밀 지름길일까요?

감사합니다.

+0

복사 후 해당 열을 숨겨야합니까? ' – RGA

+0

네, 그게 문제의 일부입니다. 그런데 열 너비를 0.1로 변경하려고 시도했습니다. 작동하지만 스프레드 시트에 수백 개의 열이 있으므로 효율성이 떨어집니다. – Lev

답변

1
여기

쉬운 솔루션 (당신은 또한 숨겨진 열 시트 저장 인덱스를 통해 루프를하지만 난 그 사실이 복사 된 시트를 만드는 것보다 더 많은 시간이 걸릴 수 있습니다 생각할 수), 분명히

Sub CopyHiddenColumns() 

    Dim DestinationSheet As Worksheet, TempSheet As Worksheet, CopySheet As Worksheet 
    Set DestinationSheet = ThisWorkbook.Worksheets("DestSheet") 
    Set CopySheet = ThisWorkbook.Worksheets("CopySheet") 
    CopySheet.Copy Before:=ThisWorkbook.Worksheets(1) 
    Set TempSheet = ThisWorkbook.Worksheets(1) 

    TempSheet.UsedRange.Hidden = False 
    TempSheet.UsedRange.Copy Destination:= DestinationSheet.Range("A1") 
    Application.DisplayAlerts = False 
    TempSheet.Delete 
    Application.DisplayAlerts = True 

End Sub 

을 당신이 지정한 사용할 수 있습니다 범위는 UsedRangeRange("A1")이 아닙니다. 방금 코드를 컴파일 할 수 있도록 필러로 배치했습니다.

+0

안녕하세요, "Set TempSheet = ..."행 - 구문 오류로 오류가있는 것 같습니다. – Lev

+1

@Lev 죄송합니다. 어리석은 실수 (나는 시트를 복사하면서 항상 노력한다). 코드는 이제 – RGA

+0

당신의 대답을 기반으로 내 솔루션을 참조하십시오 수정하도록 editted입니다. 당신이 무슨 생각을하는지 제게 알려주세요. – Lev

0

RGA 덕분에 코드를 더 많이 사용하여이 결과를 얻었습니다. 잘 작동합니다. 어떻게 생각하세요?

Sub lev() 
Dim ws As Worksheet, temp As Worksheet, copyrange As Range, pasterange As Range 

Set ws = ThisWorkbook.ActiveSheet 

On Error GoTo nocell 

Set copyrange = Application.InputBox(Prompt:="Please Select Range", Title:="Range Select", Type:=8) 

On Error GoTo nocell 

Set pasterange = Application.InputBox(Prompt:="Please Select ONE Cell to paste the your selection!", Title:="Range Select", Type:=8) 
On Error GoTo 0 

ws.Copy before:=ThisWorkbook.ActiveSheet 

ActiveSheet.Name = "temp123" 
Range("a1", Selection.End(xlToRight)).Select 
    Selection.EntireColumn.Hidden = False 

    Range("a1", Selection.End(xlDown)).Select 
    Selection.EntireRow.Hidden = False 

    Range(copyrange.Address()).Select 

Selection.Copy Destination:=pasterange 
Application.DisplayAlerts = False 
Sheets("temp123").Delete 
Application.DisplayAlerts = True 

nocell: 
End Sub 

이 코드는 필터링, 숨겨진 행 및 숨겨진 열을 모두 처리 할 수 ​​있습니다. 사실, 이것은 매우 멋지고 유용합니다.

당신의 생각을 알려주세요.

관련 문제