2017-11-18 1 views
0

셀 범위에서 순위 식을 실행하고 싶습니다. 나는 그것이 왜 작동하지 않는지에 관해서 머리를 긁적입니다. Lastrow는 행 수를 계산하는 수식 일뿐입니다.VBA에서 구문을 수식으로 쓰기

Range("B1:B" & Lastrow).Formula = "=RANK(A1,Offset(" & Chr$(36) & "A1" & Chr$(36) & "," & Lastrow & ",0))" 

Chr $ (36)에 문제가있는 것 같지만 Chr (36)을 시도해도 작동하지 않습니다. (이 chr (36)을 제거하고 단지 오프셋 (A1 ... 등)이 잘 작동 함).

미리 감사드립니다.

+0

바보 같았습니다! Range ("B1 : B"& Lastrow) .Formula = " = RANK (A1, A1 : 오프셋 ("& Chr (36) &"A "& Chr (36) &"1 "& Lastrow & ", 0))"' – mrhappysmile

+0

그래서 제대로 작동합니까? – ashleedawg

+1

문자열에 $를 추가하는 대신 Chr (36)을 사용하는 이유는 무엇입니까? – ashleedawg

답변

2

당신이하고 싶은 것을보기가 어렵습니다. 아래의 VBA 코드 라인은 적어도 작동합니다.

Range("B1:B" & LastRow).Formula = "=RANK(ROW(),$A1:$A$" & LastRow & ",0)" 

문제가 RANK() 기능인 것으로 보입니다. 3 개의 논쟁, (1) 순위, (2) 순위를 찾을 수있는 범위, (3) 오름차순/내림차순이 있습니다. 수식에서 첫 번째 인수가 누락되어 당신의 "오프셋 ("& 대하 $ (36) & "A1"는 & 대하 $ (36) & ","& LastRow는 "닫는 대괄호로 Offset($A1$,300과 같이 범위를 설명하지 않습니다

위의 수식은 Row 1을 1, Row 2를 2 등으로 표시하지만 내림차순으로 세 번째 인수 (수식에서 가져옴)와 두 번째 인수로 범위 A1과 LastRow 사이의 A 열에 있습니다. 아마도 당신이 원했던 것은 아니지만, 당신이 그것을 조정할 수 있기를 바랍니다.

+0

안녕하십니까. 안녕하세요. 알아 냈지만 Row() 함수에 대한 제안은 나를 위해 추가 열을 제거 할 때 영리합니다. 감사! – mrhappysmile