programing

Excel의 범위는 무엇입니까?행 속성이 정말 그럴까요?

muds 2023. 5. 21. 12:02
반응형

Excel의 범위는 무엇입니까?행 속성이 정말 그럴까요?

저는 , 저는 다시 한번로운 Excel-VBA의 . 그리고 저는 다시 한번 미스터리의 수수께끼에 부딪혔습니다.range.Rows(?) 그리고worksheet.Rows특성.

(: 이 해당하는 이속실무수나무에고제있아참사까습니는람이하게는지적수있항다러니습될용에목엇는고?) (하: 이모해것당이든한성제이엇로행공야을하을해▁(▁does참▁applies?)*.Columns속성도 포함).

다음과 같은 다양한 행을 반환하는 데 사용할 수 있습니다.

   SET rng = wks.Rows(iStartRow, iEndRow)

그러나 인텔리센스가 두 가지 주장을 보여주고 있음에도 불구하고 저는 결코 그렇게 할 수 없었습니다.대신에 저는 2~3개의 다른 (매우 흐림) 기술 중 하나를 사용해야 합니다.

이 도움말은 매우 도움이 되지 않으며(Office VBA의 경우 일반적으로 그러하며), "행"에 대한 구글 검색은 다른 용어를 아무리 많이 추가해도 그다지 유용하지 않습니다.

할 수 은 1)로 반환하는 입니다. (1) 단 범 행 로 반 는 하 환 수 있 방 유 니 입 다 법 한 일 는 할 사 용 것 이 일 위 을 ▁the 다 니 방 입 ▁1 ▁as ▁1 ▁( ▁a ▁it ▁for ▁row ▁things ▁are ▁single ▁only ▁thatrng.Rows(i)및 2행합니다( ) 및 2 ) 범 있 행 수 반 환 합 니 다 를 는 위 에 니 합rng.Rows.Count그게 다야?다른 좋은 점은 없나요?

명확화:범위를 반환하고 행 범위를 가져오는 다른 방법이 있다는 것을 알고 있습니다.제가 요청하는 것은 구체적으로 우리가 얻는 것이 무엇인가 하는 것입니다..Rows()우리가 아직 얻지 못한 것..Cells()그리고..Range()제가 알고 있는 두 가지는 1) 단일 행의 범위를 반환하는 더 쉬운 방법과 2) 범위의 행 수를 계산하는 방법입니다.

또 다른 것은 없습니까?

Range.Rows그리고.Range.Columns새 범위에 행 또는 열을 나타내는 플래그가 있다는 사실을 제외하고 기본적으로 동일한 범위를 반환합니다.이는 Range와 같은 일부 Excel 속성에 필요합니다.카운트 및 범위.및 김숨및 같일은방대부해법과 Range.AutoFit():

  • Range.Rows.Count범위의 행 수를 반환합니다.
  • Range.Columns.Count범위의 열 수를 반환합니다.
  • Range.Rows.AutoFit()범위의 행을 자동으로 적합시킵니다.
  • Range.Columns.AutoFit()범위의 열을 자동으로 적합시킵니다.

당신은 그것을 발견할지도 모릅니다.Range.EntireRow그리고.Range.EntireColumn여전히 당신이 찾고 있는 것이 정확하지는 않지만 유용합니다.한 모든 합니다.EntireRow 가능한 은 다음과 같이 입력합니다.EntireColumn표시된 범위에 대해.

SpreadsheetGear for .NET에는 Excel의 API와 매우 유사한 .NET API가 함께 제공되기 때문에 알고 있습니다.SpreadsheetGear API는 다음과 같이 IRange 인덱서에 강력하게 유형화된 오버로드를 제공합니다.

  • IRange this[int row1, int column1, int row2, int column2];

고지 사항:스프레드시트Gear LLC 소유

범위. 행, 범위.열 및 범위.셀은 Excel입니다.VBA Type() 함수에 따라 객체 범위 지정:

?TypeName(Selection.rows)범위
However, that's not the whole story: those returned objects are extended types that inherit every property and method from Excel::Range - but .Columns and .Rows have a special For... Each iterator, and a special .Count property that aren't 상당히. the same as the parent Range object's iterator and count.

그래서 셀은 부모 범위의 기본 반복기처럼 단일 셀 범위의 모음으로 반복되고 계산됩니다.

그러나 열은 수직 하위 범위의 집합으로 반복되고 계산되며, 각 열은 너비가 하나인 단일 열은 너비가 하나입니다.

...그리고.행은 수평 하위 범위의 집합으로 반복되고 계산되며, 각 행의 높이는 하나입니다.

이 코드를 이해하는 가장 쉬운 방법은 이 코드를 단계별로 살펴보고 선택한 항목을 확인하는 것입니다.

 테스트는 다음과 같습니다.
범위로 하위 범위 흐림부모 범위를 범위로 어둡게 설정
상위 범위 = 활성 시트를 설정합니다. 범위("B2:E5")

상위 범위의 각 하위 범위에 대해. 범위.선택선택한다.다음 분.
상위 범위의 각 하위 범위에 대해. 범위.선택선택한다.다음 분.
상위 범위의 각 하위 범위에 대해. 범위.선택선택한다.다음 분.
상위 범위의 각 하위 범위에 대해.선택선택한다.다음 분.
끝 하위 항목
Enjoy. And try it with a couple of merged cells in there, just to see how 이상한 merged ranges can be.

의 두 는 제가 해 본 입니다.Rows그리고.Columns에 대한 속성, 하지만 이론적으로 당신은 그것들로 할 수 있는 모든 것을 할 수 있습니다.Range물건.

으로 속반유그은자체다니입형환성러이의한▁itself입니다.Range다음과 같은 작업을 수행할 수 있습니다.

Dim myRange as Range
Set myRange = Sheet1.Range(Cells(2,2),Cells(8,8))
myRange.Rows(3).Select

음에서 세행선다니택합에서 세 합니다.myRange B4 (셀 B4:)시트 1의 H4).

업데이트: 원하는 작업을 수행하려면 다음을 사용할 수 있습니다.

Dim interestingRows as Range
Set interestingRows = Sheet1.Range(startRow & ":" & endRow)

업데이트 #2: 또는 다른 범위 내에서 행의 하위 집합을 가져오려면:

Dim someRange As Range
Dim interestingRows As Range

Set myRange = Sheet1.Range(Cells(2, 2), Cells(8, 8))

startRow = 3
endRow = 6

Set interestingRows = Range(myRange.Rows(startRow), myRange.Rows(endRow))

그때부터.행 결과는 행으로 구성된 것으로 표시되며, 다음과 같이 각 행을 개별적으로 처리하도록 "각각"할 수 있습니다.

Function Attendance(rng As Range) As Long
Attendance = 0
For Each rRow In rng.Rows
    If WorksheetFunction.Sum(rRow) > 0 Then
        Attendance = Attendance + 1
    End If
Next
End Function

사용자 목록(다른 행)에 대한 몇 가지 범주(다른 열) 중 하나의 참석 여부를 확인합니다.

(물론 사용할 수 있습니다.범위에 있는 열 위에 "각자에 대해"를 표시하는 열입니다.)

확실하지는 않지만, 두 번째 변수는 적청어인 것 같습니다.

.행 모두.열에는 행 인덱스와 열 인덱스라는 두 가지 선택적 매개 변수가 사용됩니다.ColumnIndex를를 들어 ColumnIndex는 " " 입니다.Rows(ColumnIndex:=2) 다에 대해 오류를 생성합니다.행 및 ..

제 생각엔 어떤 의미에서 그것이 유전되었다고 생각합니다.Cells(RowIndex,ColumnIndex)속성이지만 첫 번째 매개 변수만 적합합니다.

저는 레인지를 사용하는 제 자신을 발견했습니다.복사 방법의 효과 행입니다.이것은 행의 높이를 출발지에서 목적지로 복사하는데, 이것이 내가 원하는 동작입니다.

rngLastRecord.Rows.Copy Destination:=Sheets("Availability").Range("a" & insertRow)

rngLastRecord를 사용했더라면.rngLastRecord 대신 복사합니다.행.복사, 행 높이는 복사 전에 있었던 것과 같습니다.

약간의 둔탁한 느낌일 수도 있지만, 다음 코드는 당신이 원하는 것을 수행합니다.

Set rng = wks.Range(wks.Rows(iStartRow), wks.Rows(iEndRow)).Rows

다른 방법이 있습니다. 예를 들어 보겠습니다.

Dim sr As String    
sr = "6:10"
Rows(sr).Select

만 하면 .iStartRow,iEndRow실타래로

저는 이것이 효과가 있습니다.

Rows(CStr(iVar1) & ":" & CStr(iVar2)).Select

언급URL : https://stackoverflow.com/questions/1038534/what-does-the-excel-range-rows-property-really-do

반응형