같은 물건이면 순번이 쌓이는 구조
다른 물건이 다시 001부터 시작하는 구조로
수식을 잘 만들었습니다.
그런데 이 수식을 사용했을때
중간에 행을 삭제했을때
기존에 있던 코드가 변경되는 상황이 발생했습니다.
예)
ABC001
ABC002
ABC003
여기서 ABC002 행을 삭제했을때
ABC003 코드가 ABC002로 변하는 상황 발생
엑셀 고수님들 혹시 행을 삭제해도 변하지 않는 함수를 만들수 없을까요?
AI에게 물어봐도 VBA를 사용하지않는한 불가능하다는 답변을 받았습니다.
행이 몇개인지 카운트해서 만든 번호라서 당연히 행 삭제 하면 변하는게 정상이고 그 수식은 순번 같이 자동으로 숫자 정 할때 사용하시고요. 품번 같은거는 수식 없이 고유값으로 정하셔야 됩니다. 그렇게 만든 품번이 맘에 드시면 복사 해서 값으로 붙여넣기 같은 방법으로 수식을 제거 해야 됩니다.
매크로를 직접 실행하지는 안하더라도 시트에 함수를 넣어서 확장자가 매크로 파일로 저장해서 사용하셔야 된다고 AI님이 알려주네요
안녕하세요.
행이나 열을 삭제한 이후에도
기존 수식의 결과값을 그대로 유지하고 싶다는 요구는
사실상 계산의 문제가 아니라 기록(Logging) 의 문제입니다.
엑셀은
본질적으로 계산 엔진으로
각 셀(Cell)은 독립적으로 값을 "저장"하는 구조가 아니라,
의존성 트리(Dependency Tree)에 의해 연결된 연산 노드입니다.
따라서
참조 범위가 변경되면
의존성 그래프가 갱신되고
영향받는 수식은 재계산됩니다.
이 동작은 참조 범위 자체가 동적으로 재정의되기 때문입니다.
예를 들어
=TEXT(COUNTIF(A$2:A4, A4),"000")
이 수식은
"A2부터 현재 행까지"라는 범위를 전제로 합니다.
만약 위 행이 삭제되면
해당 범위가 재정의되고,
그에 따라 COUNTIF 결과도 다시 계산됩니다.
그 결과 값이 바뀌는 것은
엑셀의 설계 원리에 따른 정상 동작입니다.
여기서
질문자님이
“삭제 전 결과를 유지하고 싶다”
는 요청사항은
계산의 연속성이 아니라 결과 상태의 보존을 요구하는 부분입니다.
엑셀은 상태를 기억하지 않습니다.
항상 현재 시트 구조를 기준으로 계산합니다.
따라서 이 요구를 만족하려면
계산을 멈추고 값을 기록해야 합니다.
수식 입력 후 Ctrl + C → 바로 그 자리에서 Ctrl + Shift + V 로
수식의 결과를 값으로 변환하거나
VBA 등을 사용해 이벤트 시점에 결과를 기록하도록 하는 것도 권해 드립니다.