데이터가 있는 마지막 열을 찾으려면 어떻게 해야 합니까?
시트에서 행을 포함하는 마지막 데이터를 찾기 위해 다음과 같은 방법을 찾았습니다.
ws.Range("A65536").End(xlUp).row
시트에 열이 포함된 마지막 데이터를 찾을 수 있는 유사한 방법이 있나요?
여러 가지 방법이 있습니다.가장 신뢰할 수 있는 것은 찾는 것이다.
Dim rLastCell As Range
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
MsgBox ("The last used column is: " & rLastCell.Column)
특정 행에서 사용된 마지막 열을 찾으려면 다음을 사용할 수 있습니다.
Dim lColumn As Long
lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
사용된 범위 사용(신뢰성이 낮음):
Dim lColumn As Long
lColumn = ws.UsedRange.Columns.Count
A열에 데이터가 없으면 사용된 범위를 사용할 수 없습니다.사용 범위의 다른 문제에 대해서는, 여기를 참조해 주세요.
사용된 범위의 리셋에 대해서는, 여기를 참조.
이게 오래된 건 알지만, 여러 가지 방법으로 테스트해 봤는데, 아직 실망하지 않았어요. 다른 사람이 말해주지 않는 한요.
행 번호
Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
열 문자
ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)
열 번호
ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
시트를 활성화한 후 코드를 사용해 보십시오.
Dim J as integer
J = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
사용하시는 경우Cells.SpecialCells(xlCellTypeLastCell).Row
단지, 문제는, 그 문제가xlCellTypeLastCell
"파일 저장" 작업을 수행하지 않으면 정보가 업데이트되지 않습니다.단, 사용UsedRange
는 항상 실시간으로 정보를 업데이트합니다.
수정이 가능할 것 같습니다.UsedRange
위의 @Readify 답변에서 코드를 입력하여 시작 열이 비어 있는지 여부에 관계없이 마지막으로 사용한 열을 가져옵니다.
그래서 이게lColumn = ws.UsedRange.Columns.Count
로 수정된.
이것.lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
항상 신뢰할 수 있는 결과를 얻을 수 있다
?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1
윗줄의 수율9
바로 옆 창문에.
여기 유용할 만한 것이 있습니다.데이터가 포함된 행을 기준으로 열 전체를 선택합니다. 이 경우 5번째 행을 사용합니다.
Dim lColumn As Long
lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)
저는 오랫동안 @Reafidy 메서드/answer를 사용해 왔습니다만, 오늘은 맨 위 행이 A1-->N1의 Marge Cell이고, 함수가 "Last Column"을 14가 아닌 1로 반환하는 문제가 발생했습니다.
현재 수정된 기능은 병합된 셀에 대한 계정입니다.
Public Function Get_lRow(WS As Worksheet) As Integer
On Error Resume Next
If Not IsWorksheetEmpty(WS) Then
Get_lRow = WS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim Cell As Range
For Each Cell In WS.UsedRange
If Cell.MergeCells Then
With Cell.MergeArea
If .Cells(.Cells.Count).Row > Get_lRow Then Get_lRow = .Cells(.Cells.Count).Row
End With
End If
Next Cell
Else
Get_lRow = 1
End If
End Function
Public Function Get_lCol(WS As Worksheet) As Integer
On Error Resume Next
If Not IsWorksheetEmpty(WS) Then
Get_lCol = WS.Cells.Find(What:="*", after:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Dim Cell As Range
For Each Cell In WS.UsedRange
If Cell.MergeCells Then
With Cell.MergeArea
If .Cells(.Cells.Count).Column > Get_lCol Then Get_lCol = .Cells(.Cells.Count).Column
End With
End If
Next Cell
Else
Get_lCol = 1
End If
End Function
데이터가 첫 번째 행에서 시작되는 경우 다음과 같은 간단한 옵션이 있습니다.
MsgBox "Last Row: " + CStr(Application.WorksheetFunction.CountA(ActiveSheet.Cells(1).EntireRow))
사용방법만CountA
전체 행에 데이터가 있는 열의 수를 카운트합니다.
이 방법에는 여러 개의 테이블이 상열을 공유하고 있는 경우 등 다양한 시나리오가 있지만, 몇 가지 빠르고 간단한 작업에서는 완벽하게 동작합니다.
언급URL : https://stackoverflow.com/questions/11926972/how-do-i-find-the-last-column-with-data
'programing' 카테고리의 다른 글
Git 저장소에 이미 커밋된 파일 무시 (0) | 2023.04.09 |
---|---|
swift range를 [Int]로 변환합니다. (0) | 2023.04.09 |
크기 조정 가능한 창에서 버튼을 최소화하고 최대화하는 방법 (0) | 2023.04.09 |
StackPanel의 자녀가 최대 공간을 아래로 채우도록 하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
SwiftUI 텍스트 정렬 (0) | 2023.04.09 |