programing

표에서 헤더 이름 및 행 번호로 Excel 셀 참조

skycolor 2023. 6. 6. 08:07
반응형

표에서 헤더 이름 및 행 번호로 Excel 셀 참조

테이블 헤더 이름과 행 번호를 VBA로 사용하여 엑셀 테이블의 셀을 참조하려고 합니다.

어떻게 해야 하나요?

여기에 이미지 설명 입력

예를 들어, 다음과 같은 것이 있습니다.

Dim tb As ListObject
'assumes Table is the first one on the ActiveSheet
Set tb = ActiveSheet.ListObjects(1)
MsgBox tb.DataBodyRange.Cells(2, tb.ListColumns("header4").Index)

더 짧은 대답은 다음과 같습니다.

MsgBox [MyTable].Cells(2, [MyTable[MyColumn]].Column)

훨씬 더 깨끗하고 쉽습니다!

이 방법을 사용하지 말아야 할 이유가 있습니까?

ThisWorkbook.Worksheets("MyWksht").Range("TableName[ColumnTitle]").Cells(RowNumber)

제 생각에 가장 간단한 답인 것 같습니다.

제가 보기에 @Salam Morcos 솔루션은 적절한 답변을 제공하지 않을 것 같습니다.테이블이 셀에서 시작되는 경우A2진술서[MyTable[FirstColumnName]].Column값은 2입니다. 적절한 솔루션은 다음과 같습니다.

MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)

이것처럼 간단합니다.열 이름으로 호출하면 해당 범위에 대해 열 인덱스가 1이 되므로 다음과 같습니다.

msgbox ActiveSheet.ListObjects(1).ListColumns("header4").DataBodyRange(2,1).value

짧게 쓰고 싶은 경우:

[MyTable[header4]].Rows(2)

훨씬 단순하고 역동적입니다.

ThisWorkbook.Worksheets("WorkSheet_Name").Range("Table_Name").Rows(Table_row_number).Select

저는 당신이 원하는 값을 반환하기 위해 다음과 같이 사용할 수 있는 기능을 만들었습니다.

사용 예: GetTableValue(테이블 이름, "ID", 3, "header4")

Function GetTableValue( _
  ByRef table As ListObject, _
  ByVal columnNameForKeyValue As String, _
  ByVal keyValue As Variant, _
  ByVal columNameForReturnValue As String _
) As Variant

  Dim rowIndex As LongPtr
  Dim columnIndex As LongPtr

  On Error GoTo ErrorHandling

  rowIndex = Application.Match(keyValue, 
  table.ListColumns(columnNameForKeyValue).DataBodyRange, 0)

  columnIndex = table.ListColumns(columNameForReturnValue).Index

  GetTableValue = table.DataBodyRange.Cells(rowIndex, columnIndex).value

  Exit Function

  ErrorHandling:

  GetTableValue = "Error: Review inputs"

End Function

언급URL : https://stackoverflow.com/questions/18811431/refer-to-excel-cell-in-table-by-header-name-and-row-number

반응형