코드를 작성하려고하는 사용자 지정 VBA 코드에이 간단한 문제가 있지만 아직 해결 방법을 찾지 못해서 나를 미치게 만듭니다. 현재 행이 5 이하 OR Excel VBA - 수식이 작성된 셀을 참조하십시오.
- 가 같은 열에 두 행까지 셀의 값을 취득 :
는 I는 수식을 가질 필요 셀 (현재 행이 6 이상인 경우)
수식이 셀 E5에 기록되면 일반 영어로 표시됩니다. E3의 값을 가져야합니다. 수식이 E6 셀에 기록되면 E5 값을 가져야합니다. 그런 다음 그 값을 다른 수식의 입력 값으로 사용하거나 상황에 따라 결과로 사용합니다. 이, 그것은 OK이었다 단독으로 사용한다면
IF(ROW()>5; INDIRECT(ADDRESS(ROW()-1; COLUMN())); INDIRECT(ADDRESS(ROW()-2; COLUMN())))
, 그러나 이것은 더 큰 중첩의 일부가 될 것입니다 :
사실 나는 다음과 같은 워크 시트 식으로 내가 원하는 것을 달성 할 수 있어요 IF 블록. 당신이 관심이 있다면, 작업 워크 시트 수식은 약간 다음과 같이보고있다 : 당신이 볼 수 있듯이, 나는 총 유지 보수 악몽에서 찾고
=IF(LEFT($C5;2) = "RT"; IF(ROW()>5; INDIRECT(ADDRESS(ROW()-1;COLUMN()));
INDIRECT(ADDRESS(ROW()-2; COLUMN())))-$F5; IF(LEFT($C5;2)="DP"; IF(ROW()>5;
INDIRECT(ADDRESS(ROW()-1;COLUMN())); INDIRECT(ADDRESS(ROW()-2;
COLUMN())))+$F5; IF(VE($E5=P$4; LEFT($C5;2)="FR"); IF(ROW()>5;
INDIRECT(ADDRESS(ROW()-1; COLUMN())); INDIRECT(ADDRESS(ROW()-2;
COLUMN())))-$F5; IF(VE($E5=P$4; LEFT($C5; 2)="RV"); IF(ROW()>5;
INDIRECT(ADDRESS(ROW()-1; COLUMN())); INDIRECT(ADDRESS(ROW()-2;
COLUMN())))+$F5; IF(ROW()>5; INDIRECT(ADDRESS(ROW()-1; COLUMN()));
INDIRECT(ADDRESS(ROW()-2; COLUMN())))))))
. 좀 봐도 어지러워. 그래서, 나는 쉽게 같이 쓸 수 있습니다 생각 VBA 수식에 언급 된 비트를 이동하기로 결정 :
Function GETTOP()
If (ActiveCell.Row < 6) Then
GETTOP = CLng(ActiveCell.Offset(-2, 0).Value)
Else
GETTOP = CLng(ActiveCell.Offset(-1, 0).Value)
End If
End Function
나는 참조 된 셀 값이 숫자가 아닌 경우 그것이 오류가 발생 알고,하지만 난거야 그 문제를 나중에 다루십시오.
난 그냥 직접 셀에 수식을 작성하는 경우 그것은 잘 작동 :
을하지만이 공식 세포에 영향을 미친다 세포를 수정하려고 할 때, 그것은 세포를 참조하려고하는 I 나는 기능에 ActiveCell
을 사용하고 있기 때문에 현재
웹에서 찾은 모든 솔루션은 ActiveCell
접근 방식을 사용합니다. 이는 셀을 직접 편집 할 때 크게 효과적입니다. 그러나 영향을받는 셀 중 하나가 편집되면 실패합니다.
그렇다면 수식이 작성된 실제 셀을 어떻게 참조 할 수 있습니까?
또는'(비 배열 수식에 대한) Application.ThisCell' –
매력처럼 일했습니다! 감사. 나는 또한 신청서에 대해 몰랐다.휘발성 기능, 그 하나에 대한 별도 감사합니다 :) – SercioSoydanov
당신은 두 번 환영합니다 ... – user3598756