반응형

Excel VBA 응용 7

Palindrome Number

Palindrome Number 대칭수 또는 회문수 앞으로 읽어도, 뒤로 읽어도 똑같은 숫자. 예를 들어 11, 121, 1331, 12321 같은 숫자들이다. 한자리 숫자도 모두 대칭수라고 할 수 있겠고. 11보다 크면서 10진수로도 대칭수 8진수로도 대칭수 2진수로도 대칭수인 10 이상의 가장 작은 자연수를 VBA로 구해보자. 우선 시트를 다음과 같이 편집해두고 "대칭수 계산" 이라고 적힌 버튼의 이름을 Palindrome 이라고 정했다. 그리고 다음 코드 중 Sub Palindrome_Click() 을 버튼에 연결해준다. Function Dec2Bin(ByVal num As Long) As String Dim result As String Dim remainder As Long Do While nu..

Excel VBA 응용 2023.12.08

Factorial 계산하기

Factorial Factorial 은 기호로는 ! 로 나타내고 다음과 같은 수식으로 계산한다. n!=n×(n1)×(n2)×...×1 Excel에서도 수식 함수로 FACT()를 사용해서 Factorial을 간단하게 계산할 수 있다. 그런데 FACT() 함수 안에 입력하는 숫자가 커지면 제대로 계산되지 않는다. Excel의 유효숫자가 15자리밖에 되지 않아서 21! 를 계산하면 51,090,942,171,709,400,000 라고 계산되는데 실제 21! 는 51,090,942,171,709,440,000 로 차이가 있다. 더 큰 숫자를 계산하면 더 큰 오차가 나게 된다. 그리고 170! 까지는 계산 결과가 나오긴 하는데 171! 부터는 ..

Excel VBA 응용 2023.12.03

Plot Digitizer

Plot Digitizer 논문이나 책에서 다른 사람이 만든 그래프를 따라 그리거나 값을 추출하고 싶을 때 사용하는 프로그램을 Plot Digitizer 라고 한다. 이를 전문적으로 하는 프로그램이 있긴 하지만 엑셀 VBA를 이용해서 비슷하게 따라할 수 있다. 우선 시트에 다음과 같이 입력하고 검은색 버튼의 이름은 Plot_Digitizer 우측에는 직선 및 표식이 있는 분산형 차트를 넣고 차트의 이름은 Chart1 이라고 정했다. 그리고 E4 와 E7 Cell 에는 [데이터] 탭 - [데이터 도구] 그룹 - [데이터 유효성 검사] 의 [데이터 유효성 검사] 메뉴에서 [설정] 탭의 [유효성 조건] - [제한 대상] 에서 목록 을 선택하고 원본에 No,Yes 를 입력한 후 확인을 누른다. 그러면 다음과 같..

Excel VBA 응용 2023.12.02

TSP (Traveling Salesman Problem)

TSP (Traveling Salesman Problem) TSP는 모든 도시들을 한번씩 방문하고 원래 시작점으로 돌아오는 최단 경로의 이동 순서를 구하는 것이다. Excel에서도 이 문제를 간단하게 풀 수 있는데 해찾기 추가 기능을 이용하면 된다. 해찾기 추가 기능은 수동으로 추가해야 사용할 수 있다. Excel 옵션의 추가 기능 창 하단의 관리에서 Excel 추가 기능을 선택하고 이동 버튼을 누르면 추가 기능 창이 나타난다. 해 찾기 추가 기능을 체크하고 확인 버튼을 누르면 다음과 같이 해 찾기 추가 기능을 사용할 수 있게 된다. 리본 메뉴의 [데이터] 탭 오른쪽 가장자리에 [해 찾기] 버튼이 생겼다. 해 찾기 버튼을 눌러서 다음과 같은 창이 나타나면 성공이다. 이제 시트에 다음과 같이 입력하고 빨간..

Excel VBA 응용 2023.11.30

Stop Watch

Stop Watch 만들기 VBA를 이용해서 스톱워치를 만들 수 있다. 어차피 핸드폰에 있는 거 쓸텐데 무슨 소용일까 싶지만 시간을 다루는 코드를 응용하는 방법을 알아놓으면 나중에 쓸 일이 있겠지... 우선 시트에 다음과 같이 입력하고 B2 Cell의 표시 형식을 hh:mm:ss.000 로 변경했다. 1/1000 초 단위 스톱워치를 만들기 위해서다. 그리고 빨간 버튼의 이름은 Start_Btn 으로 파란 버튼의 이름은 Reset_Btn 으로 정했다. F3 Cell에 시작 이라고 입력하고 빨간 버튼을 마우스로 클릭한 다음 F3 Cell을 클릭하면 다음 그림과 같이 수식에 =$F$3 가 입력된다. (텍스트 편집이 아니다) 그러면 빨간 버튼에 F3 Cell에 입력한 글자가 똑같이 표시된다. 같은 방법으로 파란..

Excel VBA 응용 2023.11.29

소인수분해

소인수분해 VBA를 이용해서 소인수분해를 해보자. 우선 시트에 다음과 같이 입력하고 실행버튼에 다음 코드를 연결한 후 Sub Prime_Click() Dim S As String Dim C As Long, D As Long, X As Long, Y As Long, F As Long C = 0 '소인수로 나눈 횟수. 0으로 리셋 P = 2 '소인수. 2부터 시작해서 3, 5, 7, ...로 증가 F = 0 '소인수 갯수. 0으로 리셋 [B5] = "" '소인수분해 결과 나오는 곳. 이전 결과를 지워야 함 X = [B3] '입력한 자연수 Do Y = X / P 'X를 P(소인수)로 나누는데 If (X Mod P) = 0 Then 'X가 P로 나누어 떨어지면 X = Y '나눈 몫 Y를 X로 다시 지정 C = ..

Excel VBA 응용 2023.11.29

콜라츠 추측

콜라츠 추측 (Collatz conjecture) 자연수 n에 대해 n이 짝수면 반으로 나누고 n이 홀수면 3배에 1을 더하는 것을 반복하다보면 결국에 1이 된다는 문제 f(n)={n2,if n is even3n+1,if n is odd 정말 1이 되는지 VBA를 이용해서 확인해보자. 우선 시트에 다음과 같이 입력하고 실행버튼의 이름은 Collatz로 지정했다. 그리고 실행버튼에 다음 코드를 연결해준 후 실행하면 Sub Collatz_Click() Dim i As Long, num As Long [B6:C1048576] =..

Excel VBA 응용 2023.11.29
반응형