오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
미해결 엑셀2021윈도우

n개의 셀 합계가 참조 셀의 값이 되도록 하는 법 있을까요

파이팅
6월 28일 조회 248

 

<<아래의 조건을 부합하는 C열(C2~C11) 만드는 법>>

  1. 사용자가 B열(B2~B11)에 거래처명을 입력(최대 10개)
  2. 입력한 거래처명 옆(C2~C11)에만 거래량(값)을 입력(양의 정수)    ※입력 순서는 무작위로 해도 작동 되어야함           ex) 입력순서 C4->C3->C2 or C3->C2->C4다 가능해야 함
    1. 입력한 거래량의 합계는 참조셀(H2)과 같아야 함(H2보다 크거나 작으면 경고 메시지창 발생, 반드시 입력한 거래량의 합계는 H2와 같아야함)
    2. 마지막 빈칸에는 자동으로 값이 입력되도록 구현  ex) C2에 20, C3에 20을 입력하면 자동으로 C4는 10이 입력되도록 구현

     

    데이터 유효성검사로 위의 조건들을 구현하려니 쉽지 않네요...

    특히 4번을 구현하려니 막혀버리네요 혹시 명쾌한 답 공유 가능하시면 감사하겠습니다

     

     

     

    댓글 8

    e
    exceller1 6월 29일

    파워쿼리로 만들어 봅니다.

    이걸 의미하는건지?

    파이팅 작성자 6월 30일

    @exceller1 님 답변 감사합니다!

    수메리안 6월 29일

    안녕하세요~

    질문을 이해하기 위해서 질문을 드릴께요.

    1. 사용자가 B열(B2~B11)에 거래처명을 입력(최대 10개)
    → 10개 이하의 거래처명을 미리 입력해 두는가요?
    → 가령 5개의 거래처명을 미리 입력해 두고, 6번째 행에는 소계가 나와야 한다는 의미인지요?

    2. 입력 순서는 무작위로 해도 작동 되어야함
    → 미리 5개의 거래처명을 입력하고 입력 순서는 랜덤으로 하고, 연번은 5번까지만 나와도 되겠네요?

    3. 입력한 거래량의 합계는 참조셀(H2)과 같아야 함
    → H2의 값은 미리 설정해 두는 건가요?
    그래서 소계와 H2값은 항상 일치해야 한다는 뜻인지요?
    이렇게 되면 H2값과 소계 값을 행을 입력할 때마다 실시간 충돌하는데,
    다 입력하고 맨 마지막에 비교해야 할 듯 하네요.

    수메리안 6월 29일

    아래와 같이 VBA로 작업했으니 한번 살펴보세요.

    ※ 매크로를 처음 사용해 보신다면,
    인터넷에서 다운받은 매크로 파일은
    보안상 기본적으로 차단되어 있어서, 바로 실행하면 매크로가 막히는 경우가 많습니다.

    아래와 같이 조치하세요.

    [파일 속성에서 차단 해제]
    파일을 다운로드 받은 폴더에서 파일 → 마우스 오른쪽 클릭 → 속성
    “차단 해제” 체크 후 [확인]

    [매크로 보안 설정 확인]
    Excel 실행 → [파일] → [옵션] → [보안센터] → [보안센터 설정] → [매크로 설정]
    "VBA 매크로 사용" 체크 후 [확인]

    (선택)[신뢰할 수 있는 위치에 저장]
    자주 쓰는 매크로 파일이라면,
    [파일] → [옵션] → [보안센터] → [신뢰할 수 있는 위치]
    매크로 파일이 있는 폴더를 추가 후, 그 폴더 안에서 매크로 파일을 실행하면 항상 허용이 됩니다.

    파이팅 작성자 6월 30일

    @수메리안 님 실행시켜봤는데 제가 생각한 방식으로 어느정도 구현되네요 ^^ VBA는 잘 모르지만 한번 연구해보겠습니다~감사합니다

    라온보리 6월 29일

    365버전으로는

    =LET(rngB,B2:B11, xTV,H2, xCnt,COUNTA(rngB), xMax,xTV-xCnt, aCut,IF(xCnt>1,SORT(RANDARRAY(xCnt-1,1,0,xMax,TRUE)),0), bCut,VSTACK(0,aCut,xMax),
    xDiv,IF(xCnt=1,xTV,DROP(bCut,1)-DROP(bCut,-1)+1), CuSum,SCAN(0,rngB,LAMBDA(xAcc,irng, xAcc+IF(irng="",0,1))),
    MAP(rngB,CuSum,LAMBDA(irng,xIdx, IF(irng="","",INDEX(xDiv,xIdx)))))

    라온보리 6월 29일

    @라온보리 님 랜덤 재생성: F9키

    파이팅 작성자 6월 30일

    @라온보리 님 답변 감사합니다!

    질문답변 게시판의 최근 글

    스크랩 완료