1
ListObject 테이블에서 마지막 몇 행의 데이터를 참조하는 명명 된 범위를 만들어야합니다. 리본에서 수식 (수식> 이름 정의)을 수동으로 수행 할 수 있지만이 작업은 3 개의 범위로 20 개의 시트에 걸쳐 수행해야합니다.ListObjects 테이블을 참조하는 VBA에서 동적 명명 된 범위를 만듭니다.
VBA를 사용하여이 방법을 사용하면 오류가 발생하고 수식 입력에 문제가 있다는 경고가 나타나고 "="을 제거해야합니다. 어떤 아이디어가 이것을 해결하는 방법?
새로운 코드를 시도하려면 Sheet1을 엽니 다. ListObjects 테이블을 만들고 명명 된 범위를 만들려고 시도합니다. 내가 수동으로 이름 관리자의 범위를 정의하는 경우
Sub test2()
Dim wks As Worksheet, tbl As ListObject
Dim arr()
arr = [{"Date","1/1/2016","2/1/2016","3/1/2016","4/1/2016";"Green",100,200,300,400;"Yellow",350,250,150,50;"Red",10,7,5,3}]
Set wks = ActiveSheet
wks.Range("a1:d5") = WorksheetFunction.Transpose(arr)
Set tbl = wks.ListObjects.Add(xlSrcRange, wks.Range("a1").CurrentRegion, , xlYes)
tbl.Name = "tblTix"
ActiveWorkbook.Names.Add "rngRedLast3Mos", "=OFFSET(tblTix,MATCH(MAX(tblTix[Date]),tblTix[Date],1)-3,MATCH(""Red"",tblTix[#Headers],0)-1,3,1)" 'THIS FAILS
ActiveWorkbook.Names.Add "rngRedLast3Mos", "=OFFSET(Sheet1!$A$1,2,3,3,1)" 'THIS WORKS
ActiveWorkbook.Names.Add "rngRedLast3Mos", "=Sheet1!$D$3:$D$5" 'THIS ALSO WORKS
Debug.Print ActiveWorkbook.Names("rngRedLast3Mos").RefersTo
Debug.Print ActiveSheet.Range("rngRedLast3Mos").Address
End Sub
것은,이 참조를 할당 할 수 있습니다, 그것은 작동합니다
=OFFSET(tblTix,MATCH(MAX(tblTix[Date]),tblTix[Date],1)-3,MATCH("Red",tblTix[#Headers],0)-1,1,1)
은 내가 잘못 무슨 일이 일어나고 있는지 이해가 안 돼요.
야후 나머지 그렇게, 그것을 작동합니다! 고맙습니다! 나는 그것을 몇 시간 동안 알아 내려고 노력했다. 그게 왜 효과가 있는지 조금 설명해 주시겠습니까? Microsoft의 문서는이 점에서별로 도움이되지 않습니다. – MJA
'Name : ='과'RefersToR1C1 : ='을 추가했습니다. 나는 그것이 이상하다는 것을 안다. 왜냐하면 기본적으로 첫 번째 2 매개 변수는 이름과 참조이며, 대부분의 경우에는 지정할 필요가 없지만이 경우에는 작동하도록해야한다. –