rand(life)

[VBA] 코드 모음 8 - 복사, 붙이기 관련 본문

컴퓨터/엑셀

[VBA] 코드 모음 8 - 복사, 붙이기 관련

flogsta 2017. 5. 13. 11:01


Application.CutCopyMode = False '클립보드를 비운다. 이것없이 파일 닫으면 경고창 뜸

Range.Insert copyorigin:=True '복사한 셀 삽입

Cells.ClearHyperlinks '모든 셀에서 하이퍼링크 삭제


'[autofill 채우기]

날짜.AutoFill Destination:=날짜.Resize(15), Type:=xlFillWeekdays, '평일날짜로만 채움

' Type:=xlFillCopy '셀복사로 채움


[복사 붙이기, 잘라내기 붙이기]

Selection.Copy Sheets(2).Range("c5") ‘선택영역 복사해서 C5 위치에 붙여넣기

 

Range("C5:I5").Cut Range("A1:G1") ‘영역 잘라내서 뒤의 영역에 붙이기

 

[값으로 붙여넣기]

값으로 붙이는 부분은 이렇게 쓰세요. 반드시 두 줄로 쓰셔야합니다.

ws출고.Range("N2:N" & ws출고.Cells(Rows.Count, "N").End(3).Row).Copy

ws송장.Range("E2").PasteSpecial (-4163)

 

 

[resize transpose 사용법]

Set a = r항목.Offset(1, 0) '사용량'이라는 글자의 바로 아래, '전력' 사용량

Worksheets(str).Cells(iDateRow, 3).Resize(, 3) = Application.Transpose(a.Resize(3))

 

Resize(, 3) = Resize(1, 3) 같은 의미이다.

 

Sheet2.Range("c4").Resize(L, 1) = Sheet1.Range("E5").Resize(L).Value2

오른쪽에 value, 왼쪽은 주소

 

또는 이런 식으로도 가능

Set k = r.Resize(, 3)

Set o = rngC.Offset(i + 1, 0)

o.Resize(, 3) = k.Value

 

  

[첫행만 남기고 데이터 삭제하는 법]

Sub clrscreen()

If Range("B2").Value = "" Then

Exit Sub

End If

With ActiveSheet.Range("A1").CurrentRegion

.Offset(1, 0).Resize(.Rows.Count - 1).Select

End With

Selection.ClearContents

End Sub



 

[pastespecial 옵션]

예시문

.Range("C1:C5").Copy

.Range("D1:D5").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd

 

 

 

xlPasteAll -4104

Everything will be pasted.

xlPasteAllExceptBorders 7

Everything except borders will be pasted.

xlPasteAllMergingConditionalFormats 14

Everything will be pasted and conditional formats will be merged.

xlPasteAllUsingSourceTheme 13

Everything will be pasted using the source theme.

xlPasteColumnWidths 8

Copied column width is pasted.

xlPasteComments -4144

Comments are pasted.

xlPasteFormats -4122

Copied source format is pasted.

xlPasteFormulas -4123

Formulas are pasted.

xlPasteFormulasAndNumberFormats 11

Formulas and Number formats are pasted.

xlPasteValidation 6

Validations are pasted.

xlPasteValues -4163

Values are pasted.

xlPasteValuesAndNumberFormats 12

Values and Number formats are pasted.

 

xlPasteSpecialOperationAdd 2

Copied data will be added with the value in the destination cell.

xlPasteSpecialOperationDivide 5

Copied data will be divided with the value in the destination cell.

xlPasteSpecialOperationMultiply 4

Copied data will be multiplied with the value in the destination cell.

xlPasteSpecialOperationNone -4142

No calculation will be done in the paste operation.

xlPasteSpecialOperationSubtract 3

Copied data will be subtracted with the value in the destination cell.



 

[자동필터를 건 부분만 복사]

AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

field 필터를 걸 위치

criteria1 필터내용

visibledropdown : 화살표표시 (0=false, 1=true)

operator

xlAnd 1 논리곱

xlBottom10Items 4 하위 10

xlBottom10Percent 6 하위10%

xlFilterCellColor 8 셀색깔

xlFilterDynamic 11 Dynamic filter

xlFilterFontColor 9 폰트색깔

xlFilterIcon 10 Filter icon

xlFilterValues 7 Filter values

xlOr 2 논리합

xlTop10Items 3 상위10

xlTop10Percent 5 상위10퍼센트

 

With rngColumn

.AutoFilter 1, T, , , 0

.Offset(1, -3).Resize(.Rows.Count - 1, 2).Copy rng

.Offset(1).Resize(.Rows.Count - 1, 1).Copy rng.Offset(, 2)

.Offset(1, 2).Resize(.Rows.Count - 1, 2).Copy rng.Offset(, 3)

.AutoFilter

End With

End If

Next i

End Sub



 

range.autofill (목적지셀범위, 타입)

타입으로 "원본이 날짜일때, ,평일,,년 단위로 채울 수 있다)

또는 숫자사이에 덧셈/배수 관계가 있는것으로 가정하고 채울 수 있다

(1,3,5를 끌어채우기하면 7,9,11... 이 채워질것 같지만 실제로는 그렇지 않다)