게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
엑셀 SUM 함수 관련 질문드립니다 ㅜㅜ
게시물ID : programmer_22224짧은주소 복사하기
작성자 : 금연왕스모킹
추천 : 0
조회수 : 995회
댓글수 : 11개
등록시간 : 2018/03/24 00:28:26
옵션
  • 본인삭제금지
  • 외부펌금지
회사에서 경리 업무를 조금 도와주고 있는데, 셀 내용이 스크린샷처럼 되어 있습니다.

직원들이 보통 2~3개 정도의 메뉴를 고르고 그 내용이 셀 안에 있는데, 각각의 메뉴에 대한 가격이 있어서 총액을 구하고자 합니다.

SUMIFS로는 어떻게 안되서 SUMPRODUCT와 ISNUMBER(FIND) 조합으로도 시도해봤는데 Value 오류만 되돌아옵니다... ㅜㅜ

혹시 방법이 없을지 엑셀 고수님들의 조언을 구합니다..
전체 추천리스트 보기
2018-03-24 11:57:49추천 0
따로 따로 하셔야죠 ㅋㅋ
뚝불 계란 따로
댓글 2개 ▲
2018-03-24 20:50:16추천 1
기본적으로는 하나의 셀에 하나의 정보만 담는다는 데이터베이스의 기본 철학에 비추면 이쪽이 맞죠.

근데 엑셀처럼 제한적인 기능(2차원/실시간계산)의 데이터베이스는 가끔 편법 부려야 할 때도 있더라고요. 저렇게 한 셀에 몰아 넣어도 가능하긴 해요. 대신 제약조건을 잘 고려해야 하며 예외처리도 잘 해줘야 합니다.

만약 어떤 사람이 배가 많이 고파서 공기밥을 2개 먹었다면? "제육 공기밥 공기밥" 이 될텐데 단순히 sumifs나 search로는 한개의 문자열밖에 찾지 못합니다. 그래서 http://lightblog.tistory.com/107 이런 꼼수를 적용해야 하며 각 셀 x 메뉴종류 만큼 반복해야 합니다.

메뉴 종류가 늘어나는 경우에 가변적으로 대처하기 위해서는 하나의 셀에 해당하는 연산과정을 여러 셀에 나눠야 하는데 이 과정에서 2차원 시트의 한계점에 부딛힙니다.

2차원의 한계를 좀 더 확장하기 위해서 시트를 여러장 쓸 수 있는데 기본적으로 메뉴와 가격은 하나의 시트로 따로 분리해두고 경리부서에서 결제하는 단위로 시트를 생성해서 재활용하는 방법이 필요합니다.

사실 이정도 확장성 고려하는 엑셀 파일을 제작하라고 하면 웬만한 프로그래머는 그냥 DB하나 구축하고 관리하는 프로그램/웹앱을 만들어서 주는게 훨씬 빠릅니다.
2018-03-25 19:54:16추천 0
각 메뉴별로 검색하여 셀 내용을 가격으로 변환시켰습니다. 혹시 셀 하나당 수식이 몇개까지 들어가는지요?ㅜㅜ
2018-03-25 13:41:11추천 1
스플릿 옵셋 인덱스 매치 이런거 쉬킷쉬킷 해서 따란 하고 가능은 할텐데

그직원분이 유지보수가능한거 아니면 만들어주지마세요...

그리고 저런건 그냥 VBA만드는게 편해요.
댓글 0개 ▲
2018-03-25 19:51:38추천 0


댓글 0개 ▲
2018-03-25 19:53:04추천 0
위에처럼 해당 텍스트가 있으면 옆 셀의 가격으로 전체 셀 내용을 바꾸고 하는 식으로 다 더하도록 했습니다.... 노가다긴 한데 메뉴가 늘어나면 늘어날수록 계산식이 늘어날텐데 혹시 줄이는 방법은 없을까요? ㅜㅜ
댓글 0개 ▲
2018-03-25 20:31:42추천 0
REPLACE 함수보다는 OFFSET 함수가 더 짧고 직관적으로 느껴져서 OFFSET으로 바꿨습니다..
메뉴 텍스트가 셀 안에 있을 경우 ISNUMBER(SEARCH=1), 그 메뉴 텍스트 오른쪽의 숫자를 가져오고(OFFSET) 셀 안에 없을 경우 ISNUMBER(SEARCH=!VALUE) 0으로 출력되도록... 해서 다 더하도록 했습니다.
=IF(ISNUMBER(SEARCH($C$30,C25)),OFFSET($C$30,0,1),0)+IF(ISNUMBER(SEARCH($C$31,C25)),OFFSET($C$31,0,1),0)+IF(ISNUMBER(SEARCH($C$32,C25)),OFFSET($C$32,0,1),0)+IF(ISNUMBER(SEARCH($C$33,C25)),OFFSET($C$33,0,1),0)+IF(ISNUMBER(SEARCH($C$34,C25)),OFFSET($C$34,0,1),0)+IF(ISNUMBER(SEARCH($C$35,C25)),OFFSET($C$35,0,1),0)+IF(ISNUMBER(SEARCH($C$36,C25)),OFFSET(C365,0,1),0)
댓글 2개 ▲
2018-03-25 20:38:17추천 0
그냥 가격 가져오는건 OFFSET 안쓰고 셀값 넣어버렸습니다.
=IF(ISNUMBER(SEARCH($C$30,C21)),$D$30,0)+IF(ISNUMBER(SEARCH($C$31,C21)),$D$31,0)+IF(ISNUMBER(SEARCH($C$32,C21)),$D$32,0)+IF(ISNUMBER(SEARCH($C$33,C21)),$D$33,0)+IF(ISNUMBER(SEARCH($C$34,C21)),$D$34,0)+IF(ISNUMBER(SEARCH($C$35,C21)),$D$35,0)+IF(ISNUMBER(SEARCH($C$36,C21)),$D$36,0)
2018-03-25 20:40:50추천 0

이쪽이 설명받는 입장에서나 나중에 유지보수할 때나 편할 것 같아서 셀값 넣도록 했습니다..
xtim
2018-03-26 06:11:55추천 1

아주 간단한 문자열 조작 VBA와 ArrayFormula를 이용한 계산법 입니다
댓글 0개 ▲
2018-03-26 13:00:04추천 0
이거 한번 참고해 보셔요
http://myeonguni.tistory.com/210
댓글 0개 ▲
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호