엑셀 숫자 조합으로 원하는 근사치 값 찾기
엑셀에서 무작위 숫자 데이터를 조합하여 원하는 값을 최소한으로 넘는 조합을 찾는 방법은 다음과 같습니다. 이 방법은 일반적으로 ‘최적 조합 찾기’ 또는 ‘부분 집합 합 문제’에 해당하며, 엑셀의 기본 기능만으로는 제한적일 수 있으나, 아래와 같이 해결할 수 있습니다.
1. 데이터 준비
• 무작위 숫자 리스트를 A열에 입력합니다. 예를 들어 A1:A10에 숫자들이 있습니다.
• 원하는 목표 값(근사치)을 셀 B1에 입력합니다. 예를 들어 150이라 지정합니다.
2. 조합 가능성 계산
• 모든 조합을 나열하기 위해 ‘이진 마스크’를 활용하거나, VBA 매크로나 다른 외부 툴을 사용해야 할 수 있는데, 일반 엑셀만 사용할 경우는 작거나 적은 데이터에 한해서 수동 조합이나 ‘데이터 분석’ 방법도 가능합니다.
3. 해결 방법 1: VBA 또는 매크로 사용
• 복잡한 조합을 찾아야 한다면, VBA로 ‘부분 집합 합을 찾는 알고리즘’을 구현하는 것이 가장 효율적입니다.
• VBA에서 ‘백트래킹’ 또는 ‘부분집합 조합 검색’ 알고리즘을 통해 가능한 조합들을 계산하고, 그중에서 목표 값을 최소한 넘는 가장 작은 값을 찾도록 할 수 있습니다.
4. 해결 방법 2: 솔버(Solver) 활용
• 엑셀의 ‘솔버’ 기능을 이용해서 원하는 조건을 만족하는 최소 합을 찾는 방법도 있습니다.
• 방법:
- 조합 가능한 각 숫자에 대해 ‘1’ 또는 ‘0’을 할당하는 이진 변수 열을 추가합니다.
- 제약조건으로 해당 이진 변수는 0 또는 1이 되게 하고, 선택된 숫자의 합이 목표값을 넘기면서도 최소가 되도록 합니다.
- ‘솔버’를 실행하여 최적 해를 구합니다.
5. 대체 방법: 수동 또는 자동 반복 계산
• 작은 데이터 세트는 모든 조합을 수식으로 구하는 것도 가능하나, 수식이 복잡할 수 있습니다.
• 또는, ‘시도와 오류’(Trial and Error)로 여러 조합을 수작업 또는 간단한 수식을 통해 찾을 수도 있습니다.
요약하자면,
• 작은 데이터에는 수작업 또는 복잡한 수식을 사용하거나,
• 큰 데이터에는 VBA 또는 솔버를 활용하는 것이 가장 적합합니다.
이 방법들이 실용적이지 않거나 어려울 경우, 전문적인 프로그래밍 언어나 확장 도구를 사용하는 것이 더 효율적일 수 있습니다.