이되고, 다음 복사 모든 행에 걸쳐 루프를 시도하는 대신 결과가 끝납니다.
하지만 당신은 어쨌든 루프 행을 원하는 경우 : 당신이 열 문자 열이 아닌 번호를 사용하는 데 필요한 Range
기능을 사용하기 위해서는
.
여기에는 2 가지 옵션이 있습니다.
Chr(lastcolumn1 + 64)
대신 lastcolumn1을 사용하십시오. 이 결함은 열 Z
까지의 열에서만 작동하며 if 문 및 더 많은 코드가없는 이중 문자 열에서는 작동하지 않습니다. 열 ZZZ
If lastcolumn1> 52 Then
strColumnLetter = Chr(Int((lastcolumn1- 1)/52) + 64) & Chr(Int((lastcolumn1- 27)/26) + 64) & Chr(Int((lastcolumn1- 27) Mod 26) + 65)
ElseIf lastcolumn1> 26 Then
strColumnLetter = Chr(Int((lastcolumn1- 1)/26) + 64) & Chr(Int((lastcolumn1- 1) Mod 26) + 65)
Else
strColumnLetter = Chr(lastcolumn1+ 64)
End If
까지에 대한 다음과 같은 작업을해야하지만 당신은 또한 사용할 수 있습니다처럼
strColumnLetter = Split(Cells(1, lastcolumn1).EntireColumn.Address(False, False), ":")(0)
또는
strColumnLetter = Left(Replace(Cells(1, lastcolumn1).Address(1, 0), "$", ""), InStr(1, Replace(Cells(1, lastcolumn1).Address(1, 0), "$", ""), 1) - 1)
또는
strColumnLetter = Left(Cells(1, lastcolumn1).Address(1, 0), InStr(1, Cells(1, lastcolumn1).Address(1, 0), "$") - 1)
그 작동하므로
많은 칼럼들 Excel이 유지됩니다.
숫자를 열로 변환하지 않으려는 경우 마지막 옵션 Cells
함수가 인수의 열 번호를 받아 들일 수 있으므로 문자의 범위를 가져 오는 것이 좋습니다.
sh.Range(cells(L,1), cells(L,lastcolumn1))
는 다시 난 그냥 그럼 그냥 뭐죠 왼쪽하지만 복사 원하지 않는 데이터를 필터링하는 필터 기능에 내장 된 표준을 사용하는 것이 좋습니다 것입니다. 이것은 더 많은 옵션을 추가하기위한 것입니다.
몇 가지 샘플 정보를 제공하면 필자에게 필터 사본 붙여 넣기를 수행 할 하위 항목을 작성할 수 있지만 데이터가 어떻게 설정되었는지는 알 수 없습니다.
Sub FilterAndCopy()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim sh As Worksheet, sh2 As Worksheet
Dim lastrow1 As Long
Dim lastcolumn1 As Long
Dim Distance As Long
Distance = 14
Set sh = ThisWorkbook.Sheets("Sample Address Database")
Set sh2 = ThisWorkbook.Sheets("Workspace")
lastrow1 = sh.Cells(Rows.Count, "A").End(xlUp).Row
lastcolumn1 = sh.Cells(1, Columns.Count).End(xlToLeft).Column
With sh
.Range(.Cells(1, 1), .Cells(lastrow1, lastcolumn1)).AutoFilter , _
field:=Distance, _
Criteria1:="<=" & CDbl(151), _
Operator:=xlAnd
.Range(.Cells(2, 1), .Cells(lastrow1, lastcolumn1)).Copy _
sh2.Range("A2")
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
당신이'lastcolumn1'로 가장 오른쪽 열을 선택하려는 경우, 당신은'xlToRight' 사용하지 않아야합니다 : 여기
은 원래의 질문에 따라 작동합니다 예입니다? – Jack@Jack 열에서 시작하여 오른쪽으로 가면 첫 번째 공백보다 항상 마지막 열 (항상 REAL 마지막 열이 아님)로 이동하지만 워크 시트의 마지막 셀로 이동하면 마지막으로 사용한 열이 될 데이터가있는 첫 번째 열로 가십시오. – user2140261
@ user2140261 아주 좋은 지적입니다. 나는 그 속임수를 몰랐다. 고마워요 :) – Jack