마지막으로 사용 된 행과 열을 찾는 것은 VBA를 사용하는 Excel의 모든 자동화에 대한 기본적이고 중요한 작업 중 하나입니다. 시트, 통합 문서를 컴파일하고 데이터를 자동으로 정렬하려면 시트의 데이터 제한을 찾아야합니다.

이 기사에서는 가장 쉬운 방법으로 Excel에서 마지막 행과 열을 찾는 모든 방법을 설명합니다.

1. Range.End를 사용하여 열에서 비어 있지 않은 마지막 행 찾기

먼저 코드를 보겠습니다. 편지를 설명하겠습니다.

Sub getLastUsedRow()

Dim last_row As Integer

last_row = Cells(Rows.Count, 1).End(xlUp).Row ‘This line gets the last row

Debug.Print last_row

End Sub

위의 하위는 1 열의 마지막 행을 찾습니다.

image

어떻게 작동합니까?

시트의 마지막 행으로 이동 한 다음 Ctrl + UP 바로 가기를 누르는 것과 같습니다.

Cells (Rows.Count, 1) :이 부분은 A 열의 셀을 선택합니다. Rows.Count는 일반적으로 Excel 시트의 마지막 행인 1048576을 제공합니다.

Cells(1048576, 1)
End (xlUp) : End는 시트에서 끝까지 탐색하는 데 사용되는 범위 클래스의 메서드입니다. xlUp은 방향을 알려주는 변수입니다.

이 명령은 함께 데이터가있는 마지막 행을 선택합니다.

Cells(Rows.Count, 1).End(xlUp)
Row : row는 선택한 셀의 행 번호를 반환합니다. 따라서 A 열에 데이터가있는 마지막 셀의 행 번호를 얻습니다. 출력 예에서는 8입니다.

데이터가있는 마지막 행을 찾는 것이 얼마나 쉬운 지 확인하십시오. 이 방법은 이전의 빈 셀에 관계없이 데이터의 마지막 행을 선택합니다. 이미지에서 A8 셀에만 데이터가 있음을 알 수 있습니다. A4를 제외한 모든 선행 셀은 비어 있습니다.

열에 데이터가있는 마지막 셀 선택

A 열의 마지막 셀을 선택하려면 끝에서 “.row”를 제거하고 .select를 작성하십시오.

Sub getLastUsedRow()

Cells(Rows.Count, 1).End(xlUp).Select ‘This line selects the last cell in a column

End Sub

“.Select”명령은 활성 셀을 선택합니다.

마지막 셀의 주소 열 가져 오기

A 열에서 마지막 셀의 주소를 얻으려면 끝에서 “.row”를 제거하고 .address를 작성하십시오.

Sub getLastUsedRow()

add=Cells(Rows.Count, 1).End(xlUp).address ‘This line selects the last cell in a column

Debug.print add

End Sub

Range.Address * 함수는 활성 셀의 주소를 반환합니다.

행에서 비어 있지 않은 마지막 열 찾기

열에서 비어 있지 않은 마지막 셀을 찾는 것과 거의 같습니다. 여기서 우리는 행 4에 데이터가있는 마지막 셀의 열 번호를 얻습니다.

Sub getLastUsedCol()

Dim last_col As Integer

last_col = Cells(4,Columns.Count).End(xlToLeft).Column ‘This line gets the last column

Debug.Print last_col

End Sub

image

이미지에서 4 행에서 비어 있지 않은 마지막 셀의 열 번호를 반환하는 것을 볼 수 있습니다. 이는 4입니다.

어떻게 작동합니까?

글쎄, 역학은 열에 데이터가있는 마지막 셀을 찾는 것과 같습니다.

열과 관련된 키워드를 사용했습니다.

VBA를 사용하여 Excel에서 데이터 세트 선택

이제 VBA를 사용하여 Excel의 마지막 행과 마지막 열을 얻는 방법을 알았습니다.

이를 사용하여 테이블 또는 데이터 세트를 쉽게 선택할 수 있습니다. 데이터 세트 또는 테이블을 선택한 후 복사-붙여 넣기, 서식 지정, 삭제 등과 같은 여러 작업을 수행 할 수 있습니다.

여기에 데이터 세트가 있습니다. 이 데이터는 아래쪽으로 확장 될 수 있습니다. B4 인 시작 셀만 고정됩니다. 마지막 행과 열은 고정되지 않습니다. vba를 사용하여 전체 테이블을 동적으로 선택해야합니다.

image

빈 셀이있는 테이블을 선택하는 VBA 코드

Sub select_table()

Dim last_row, last_col As Long

'Get last row

last_row = Cells(Rows.Count, 2).End(xlUp).Row

'Get last column

last_col = Cells(4, Columns.Count).End(xlToLeft).Column

'Select entire table

Range(Cells(4, 2), Cells(last_row, last_col)).Select

End Sub

이것을 실행하면 전체 테이블이 순식간에 선택됩니다. 새 행과 열을 추가 할 수 있습니다. 항상 전체 데이터를 선택합니다.

image

이 방법의 이점 :

  1. 그것은 간단합니다. 말 그대로 데이터가있는 마지막 행을 얻기 위해 한 줄만 작성했습니다.

이것은 쉽게 만듭니다.

  1. 빠른. 더 적은 코드 줄, 더 적은 시간 소요.

  2. 이해하기 쉬운.

  3. 시작점이 고정 된 서투른 데이터 테이블이있는 경우 완벽하게 작동합니다.

Range.End 메서드의 단점 :

  1. 시작점을 알아야합니다.

  2. 알려진 행 또는 열에서 비어 있지 않은 마지막 셀만 가져올 수 있습니다. 출발점이 고정되지 않으면 쓸모가 없습니다. 일어날 가능성이 매우 낮습니다.

2. Find () 함수를 사용하여 마지막 행 찾기

먼저 코드를 보겠습니다.

Sub last_row()

lastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row



Debug.Print lastRow

End Sub

image

이미지에서 볼 수 있듯이이 코드는 마지막 행을 정확하게 반환합니다.

어떻게 작동합니까?

여기서 우리는 와일드 카드 연산자 “*”를 사용하여 모든 것을 포함하는 셀을 찾기 위해 find 함수를 사용합니다. 별표는 텍스트 또는 숫자를 찾는 데 사용됩니다.

We set search order by rows (searchorder:=xlByRows). We also tell excel vba the direction of search as xlPrevious (searchdirection:=xlPrevious). It makes find function to search from end of the sheet, row wise.

Once it find a cell that contains anything, it stops. We use the Range.Row method to fetch last row from active cell.

데이터가있는 마지막 셀을 가져 오기위한 찾기 기능의 이점 :

  1. 시작점을 알 필요가 없습니다. 마지막 행을 가져옵니다. . 일반적 일 수 있으며 변경없이 시트에서 데이터가있는 마지막 셀을 찾는 데 사용할 수 있습니다.

  2. 시트에서 특정 텍스트 또는 숫자의 마지막 인스턴스를 찾는 데 사용할 수 있습니다.

Find () 함수의 단점 :

  1. 못 생겼다. 인수가 너무 많습니다.

  2. 느립니다.

  3. 비어 있지 않은 마지막 열을 가져 오는 데 사용할 수 없습니다. 기술적으로 할 수 있습니다. 하지만 너무 느려집니다.

3. SpecialCells 함수를 사용하여 마지막 행 가져 오기

xlCellTypeLastCell 인수가있는 SpecialCells 함수는 마지막으로 사용 된 셀을 반환합니다. 먼저 코드를 보자

Sub spl_last_row_()

lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Debug.Print lastRow

End Sub

image

위의 코드를 실행하면 마지막으로 사용한 셀의 행 번호를 얻을 수 있습니다.

어떻게 작동합니까?

Excel에서 바로 가기 Ctrl + End에 해당하는 vba입니다. 마지막으로 사용한 셀을 선택합니다. CTRL + End를 누른 상태에서 매크로를 기록하면이 코드가 표시됩니다.

Sub Macro1()

'

' Macro1 Macro

'

'

ActiveCell.SpecialCells(xlLastCell).Select

End Sub

마지막으로 사용한 셀의 행 번호를 가져 오는 데 사용했습니다.

참고 : * 위에서 말했듯이이 메서드는 데이터가있는 마지막 셀이 아니라 마지막으로 사용 된 셀을 반환합니다. 마지막 셀의 데이터를 삭제하면 위의 vba 코드는 “마지막으로 사용 된 셀”이기 때문에 동일한 셀 참조를 반환합니다. 이 방법을 사용하여 데이터가있는 마지막 셀을 가져 오려면 먼저 문서를 저장해야합니다.

관련 기사 :

link : / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel [Microsoft Excel에서 VBA를 사용하여 확인 메시지없이 시트 삭제]

link : / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 새 통합 문서 추가 및 저장]

link : / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Excel VBA 상태 표시 줄에 메시지 표시]

link : / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 경고 메시지 끄기]

인기 기사 :

link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]

link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]

link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]