스프레드 시트에 A 열을 통해 필터링 할 수있는 일부 데이터가 있습니다. 각 행 유형의 첫 번째 행만 원하는 형식을 갖습니다. 일단 여과필터링 된 범위의 서식 만 붙여 넣기
, 전 범위의 나머지 (표시 셀 만)를 붙여 첫 번째 행에서의 포맷을 복사 할 필요가있다.
매크로해야 실행 한 후 최종 결과 :
내가 붙어있어 내가 맞는 그물에 아무것도 찾을 수 없습니다. 아무도 도와 줄 수 있니?
Sub Repair()
Dim i As Integer
Dim FirstRow As Long, LastRow As Long
Dim Rang1 As Range, Rang2 As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With ActiveSheet
.Cells.EntireColumn.Hidden = False 'Show all
.AutoFilterMode = False 'Filter off
.Columns("A:A").Select
Selection.AutoFilter 'Filter column A
End With
'Row 1 is header
'Filter type "P":
ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:="P", Operator:=xlFilterValues
'Create Range from filtered data
Set Rang1 = Range("A2",
Range("A2").End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
FirstRow = Rang1.Row 'First row of filtered data
LastRow = LastFilteredRow 'Last row of filtered data
'Change values and formats:
Range("B" & FirstRow & ":D" & LastRow & ",H" & FirstRow & ":H" & LastRow & ",J" & FirstRow & ":K" & LastRow).Select
Selection.FillDown
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Function LastFilteredRow() As Long
Dim Rng As Range
Dim x As Variant
Dim LastAddress As String
On Error GoTo NoFilterOnSheet
With ActiveSheet.AutoFilter.Range
Set Rng = .Resize(.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
x = Split(Replace(Rng.Address, ",", ":"), ":")
LastAddress = x(UBound(x))
LastFilteredRow = Range(LastAddress).Row
End With
NoFilterOnSheet:
End Function
에서 [투어]를하시기 바랍니다 [질문하기] (HTTPS ://스택 overflow.com/help/how-to-ask) 및 [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve)을 참조하십시오. 그런 다음 게시물을 수정하십시오. – danieltakeshi
편집 됨. 내 질문을 명확히하기 위해 허용되는 최대 이미지 수를 추가했습니다. –
문제를 작은 미니 문제로 나누어야하므로 전체 코드를 코딩 할 수 있습니다. 따라서 자동 필터, 복사/붙여 넣기 형식 ('붙여 넣기 : = xlPasteFormats') 등을 찾으십시오. – danieltakeshi