programing

VBA에서 사용된 마지막 행을 결정하는 방법(빈칸 포함)

lastmoon 2023. 6. 6. 10:33
반응형

VBA에서 사용된 마지막 행을 결정하는 방법(빈칸 포함)

중간에 있는 빈 줄을 포함하여 Excel 시트의 마지막 행을 확인하려면 어떻게 해야 합니까?

이 기능을 사용할 경우:

Function ultimaFilaBlanco(col As String) As Long        
        Dim lastRow As Long
        With ActiveSheet
            lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row
        End With            
        ultimaFilaBlanco = lastRow          
End Function

그리고 다음 데이터:

Row 1 : Value
Row 2 : Value
Row 3 : Value
Row 4 : Value
Row 5 : Value
Row 6 : White
Row 7 : Value
Row 8 : Value
Row 9 : Value
Row 10  : White
Row 11  : White
Row 12  : White
Row 13  : Value
Row 14  : White

함수는 5를 반환하고, 저는 13이 필요합니다.어떻게 하는지 아세요?

마지막 행 수를 가져오는 가장 좋은 방법은 다음과 같습니다.

ActiveSheet.UsedRange.Rows.Count당좌표에 대하여.

Worksheets("Sheet name").UsedRange.Rows.Count특정 시트에 대해.

마지막으로 사용한 열 번호를 가져오는 방법

ActiveSheet.UsedRange.Columns.Count당좌표에 대하여.

Worksheets("Sheet name").UsedRange.Columns.Count특정 시트에 대해.

이것이 도움이 되길 바랍니다.

압도

ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row -1

짧습니다. 안전합니다.빠름. 시트의 맨 위 또는 다른 위치에 빈 줄이 있더라도 비어 있지 않은 마지막 행을 반환합니다.빈 시트에도 사용할 수 있습니다(Excel은 빈 시트에 사용된 행이 1이므로 식은 1이 됩니다).Excel 2002 및 Excel 2010 테스트 및 작업.

다음을 사용합니다.

lastrow = ActiveSheet.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row

특정 열의 마지막 행을 찾습니다.열에 대해 마지막으로 사용한 행을 원하는 경우:

lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row

당신은 정말 가깝습니다.큰 행 번호를 사용해 보십시오.End(xlUp)

Function ultimaFilaBlanco(col As String) As Long

        Dim lastRow As Long
        With ActiveSheet
            lastRow = ActiveSheet.Cells(1048576, col).End(xlUp).row
        End With

        ultimaFilaBlanco = lastRow

End Function
LastRow = ActiveSheet.UsedRange.Rows.Count

문제는 함수의 "as string"입니다."두 배로" 또는 "오래"로 대체하여 작동합니다.이렇게 하면 마지막 행이 허용된 답변에서 제안된 "큰 숫자"보다 클 경우에도 작동합니다.

그래서 이것은 효과가 있을 것입니다.

Function ultimaFilaBlanco(col As double) As Long        
    Dim lastRow As Long
    With ActiveSheet
        lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row
    End With            
    ultimaFilaBlanco = lastRow          
End Function

시트 상단에 미사용 영역이 포함되어 있는 경우,UsedRange.Rows.Count최대 행이 아닙니다.

올바른 최대 행 번호입니다.

maxrow = Sheets("..name..").UsedRange.Rows(Sheets("..name..").UsedRange.Rows.Count).Row

언급된 모든 방법 외에도 워크시트 또는 지정된 범위에서 마지막 행이나 열을 찾는 방법은 여러 가지가 있습니다.

Function FindingLastRow(col As String) As Long

  'PURPOSE: Various ways to find the last row in a column or a range
  'ASSUMPTION: col is passed as column header name in string data type i.e. "B", "AZ" etc.

   Dim wks As Worksheet
   Dim lstRow As Long

   Set wks = ThisWorkbook.Worksheets("Sheet1") 'Please change the sheet name
   'Set wks = ActiveSheet   'or for your problem uncomment this line

   'Method #1: By Finding Last used cell in the worksheet
   lstRow = wks.Range("A1").SpecialCells(xlCellTypeLastCell).Row

   'Method #2: Using Table Range
   lstRow = wks.ListObjects("Table1").Range.Rows.Count

   'Method #3 : Manual way of selecting last Row : Ctrl + Shift + End
   lstRow = wks.Cells(wks.Rows.Count, col).End(xlUp).Row

   'Method #4: By using UsedRange
   wks.UsedRange 'Refresh UsedRange
   lstRow = wks.UsedRange.Rows(wks.UsedRange.Rows.Count).Row

   'Method #5: Using Named Range
   lstRow = wks.Range("MyNamedRange").Rows.Count

   'Method #6: Ctrl + Shift + Down (Range should be the first cell in data set)
   lstRow = wks.Range("A1").CurrentRegion.Rows.Count

   'Method #7: Using Range.Find method
   lstRow = wks.Column(col).Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row

   FindingLastRow = lstRow

End Function

참고: 문제 진술을 정당화하기 위해 위의 방법 중 하나만 사용하십시오.

Find 메서드는 셀 형식 지정이 아니라 데이터만 인식하므로 데이터만 중요하고 형식 지정이 아닌 경우 xlCellTypeLastCell을 찾습니다.또한 병합된 셀(피해야 함)은 병합된 셀의 마지막 셀이 아닌 첫 번째 셀의 행 번호를 제공하므로 예기치 않은 결과를 제공할 수 있습니다.

ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.count).row

활성 시트는 다음으로 대체할 수 있습니다.WorkSheets(1)또는WorkSheets("name here")

예를 들어 첫 번째 행 'A'에서 다음 빈 행을 찾기 위한 코드입니다.다른 행에 사용하려면 셀만 변경합니다(i, 2 또는 3 또는 4 등).

Sheets("Sheeet1").Select
   for i=1 to 5000
        if cells(i,1)="" then nextEmpty=i goto 20
   next i
20 'continue your code here 

enter code here

향상:

if cells(i,1)="" then 
nextEmpty=i: 
exit for

언급URL : https://stackoverflow.com/questions/13686801/how-to-determine-the-last-row-used-in-vba-including-blank-spaces-in-between

반응형