Do while loop 문에서 제가 설정한 반복값 횟수 이상으로 계산이 됩니다

VBA
작성자
champio****
작성일
2024-08-04 21:38
조회
203
엑셀버전 : 엑셀2010 이전

운영체제 : 윈도우10

질문 요약 : 제가 지정한 반복 횟수 이상으로 돌아가는데 무엇을 수정해야할까요?

제가 작성한 코드는 아래에 있습니다.

함수 형태로 VBA를 짜고 있는데요, 입력된 파라미터는 각각 101.0955 / 100.00 / 3.125% / 4 / 88 / 183 입니다.

반복횟수를 초기값 k=0으로 지정한 이후에 종료 조건을 k<5로 지정했습니다.

그러면 총 5회 루프가 돌고 끝나야 하는데, 처음 입력한 파라미터 값으로 5회 계산이 반복된 이후에 파라미터가 변화되어서 10번 돌고 다시 본래의 파라미터로 돌아와서 5회가 돌고 끝이납니다.

어떻게 수정해야할까요?

부탁드리겠습니다

 

--------------------------------------------------------------------------------------------------------------------------------------------------------

 

Function CalculateYTM(P As Double, F As Double, C As Double, N As Double, t As Double, days As Double) As Double

Dim tolerance As Double
Dim guess As Double
Dim price As Double
Dim i As Integer
Dim k As Long

' 초기값과 허용 오차 설정
tolerance = 0.0000001
guess = 0.03 ' YTM 초기 추정값
k = 0

Do While k < 5
k = k + 1

' 6개월 단위 복리로 할인된 가격 계산(1) : 쿠폰들의 PV
price = 0
For i = 1 To N
price = price + (C * F / 2) / (1 + guess / 2) ^ (i - 1)

'MsgBox ("i입니다" & i & "N입니다" & N)

Next i

' 6개월 단위 복리로 할인된 가격 계산(1) : 원금과 쿠폰들의 PV
price = price + (F) / (1 + guess / 2) ^ (N - 1)

' 단리로 할인
price = price / (1 + guess * t / days)

' 현재 가격과 계산된 가격의 차이
price = price - P

' YTM 추정값 수정
If Abs(price) < tolerance Then
Exit Do
Else
guess = guess + Sgn(price) * 0.000000001

End If
'MsgBox ("루프를 돌고있습니다.")

 

Loop
'MsgBox ("루프가 끝났습니다.")

CalculateYTM = guess
End Function

'P는 현재 시장 가격, F는 액면가, C는 연간 쿠폰 수익률, N은 잔존 쿠폰지급횟수
't는 현재부터 차기 이자 지급일까지의 기간 (년 단위), days는 직전쿠폰일부터 차기 쿠폰일까지의 기간

신고
스크랩
공유
전체 3

  • 2024-08-04 22:42
    채택된 답변

    @champio**** 님 해당 함수는 정상적으로 5번 수행되고 종료됩니다.
    아마도 UDF로 사용시 해당 계산이 2번 진행이 되는 경우가 많습니다.
    설명하신 내용은 다른 셀에서 사용된 함수가 계산되는 것을 보신 것 같습니다.
    Debug.Print Application.Caller.Address 을 추가해서 어느 셀의 계산이 수행되는 지 점검해 보세요.

    제가 넣어 본 결과는 B12셀을 F2, Enter를 누르면 아래와 같이 출력됩니다.
    정상으로 보입니다.

    $B$12
    $M$12
    $X$12
    $B$12


  • 2024-08-05 13:28

    @champio**** 님 ㅠㅠ


전체 16,930
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (290)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 844124
오빠두엑셀 2022.02.03 554 844124
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 304 | 조회 31508
오빠두엑셀 2021.10.28 304 31508
74599 함수/공식
New 이런 경우에는 무슨 함수를 써야할까요..? (1)
iwnqn | 21:55 | 추천 0 | 조회 11
iwnqn 21:55 - 11
74598 문서서식
New 엑셀 유효성 검사 뛰어 쓰기 문제 엑셀파일 (2)
퉁퉁이 | 21:54 | 추천 0 | 조회 10
퉁퉁이 21:54 - 10
74592 함수/공식
New 여러 값들 중에서 원하는 값을 찾고 싶어요 도와주세요! 첨부파일 (6) 답변완료
저도해볼게요 | 19:06 | 추천 0 | 조회 41
저도해볼게요 19:06 - 41
74589 구글시트
New 한셀에 줄바꿈으로 있는 여러데이터를 한셀에 한데이터 들어가게끔 일괄로 하고 싶습니다 첨부파일 (4) 답변완료
스톤스톤 | 18:21 | 추천 0 | 조회 35
스톤스톤 18:21 - 35
74585 VBA
New UserForm 크기질문 첨부파일 (4) 답변완료
땡이 | 15:35 | 추천 0 | 조회 50
땡이 15:35 - 50
74583 함수/공식
New XLOOKUP 함수의 다중조건을 잘 모르겠습니다 첨부파일 (4)
qlcc**** | 14:58 | 추천 0 | 조회 51
qlcc**** 14:58 - 51
74582 함수/공식
New filter 함수에 대해 문의드립니다 (5)
김은상 | 14:45 | 추천 0 | 조회 51
김은상 14:45 - 51
74581 구글시트
New 구글폼 견적서 자동화 관련, 폼에서 입력된 이미지 파일을 견적서에 넣는 방법 좀 알려주시면 감사하겠습니다.
| 14:38 | 추천 0 | 조회 39
14:38 - 39
74572 차트/그래프
New 꺽은선 그래프의 레이블이 원복이 됩니다. 첨부파일 (3)
구리구리이 | 13:38 | 추천 0 | 조회 43
구리구리이 13:38 - 43
74570 함수/공식
New 배수 금액으로 순번 정하기 알려 주세요...ㅠ 엑셀파일첨부파일 (3)
서기 | 13:15 | 추천 0 | 조회 39
서기 13:15 - 39
74566 함수/공식
New 두개의 열에 입력된 데이터를 순서 바꿔서 입력으로 중복일 때 골라내는 법 엑셀파일첨부파일 (1)
문과적남자 | 12:35 | 추천 0 | 조회 43
문과적남자 12:35 - 43
74564 함수/공식
New 각 열별로 합 구하는 방법 첨부파일 (1)
라핼 | 11:13 | 추천 0 | 조회 53
라핼 11:13 - 53
74563 함수/공식
New 필터 적용시 중복값 제외 카운트 되는 법 좀 알려주세요 ㅠㅠ 첨부파일 (1)
정재욱 | 10:43 | 추천 0 | 조회 58
정재욱 10:43 - 58
74558 함수/공식
New 문자와 숫자가 섞여있는 열의 합계와 평균을 구하는 방법을 알려주세요!! 첨부파일 (9)
침착해 | 08:17 | 추천 0 | 조회 61
침착해 08:17 - 61
74556 함수/공식
New 세트상품 마진율 구하기 (2)
ek02 | 07:48 | 추천 0 | 조회 50
ek02 07:48 - 50
74543 기능/도구
New 문자와 숫자 혼합된 셀에서 숫자만 따로 따올수 있는 기능이 있을까요? 첨부파일 (3)
야만용사 | 2024.10.29 | 추천 0 | 조회 82
야만용사 2024.10.29 - 82
74542 기능/도구
New 엑셀 백분율 숫자로변경 (3)
rarara | 2024.10.29 | 추천 0 | 조회 73
rarara 2024.10.29 - 73
74540 함수/공식
New ★데이터 가공★ 잘못된 데이터를 올바른 데이터로 변환하는 과정을 도와주세요 ㅠㅠ 엑셀파일첨부파일 (9)
| 2024.10.29 | 추천 0 | 조회 107
2024.10.29 - 107
74539 함수/공식
New 안녕하세요 INDEX, MATCH 다중조건 질문드립니다! 엑셀파일 (3)
gys**** | 2024.10.29 | 추천 0 | 조회 85
gys**** 2024.10.29 - 85
74533 함수/공식
New 산출집계시트에 항목을 산출서에서 가져오고싶어요 엑셀파일 (3)
Moto | 2024.10.29 | 추천 0 | 조회 80
Moto 2024.10.29 - 80
74532 문서서식
New [질문] 전체 행 또는 열을 선택 후 특정 셀만 선택 제외 시키기 첨부파일 (2)
ViVaViva | 2024.10.29 | 추천 0 | 조회 69
ViVaViva 2024.10.29 - 69
74530 함수/공식
New Lookup 함수 오류에 관한 문의 엑셀파일첨부파일 (6) 답변완료
TMOH | 2024.10.29 | 추천 0 | 조회 82
TMOH 2024.10.29 - 82
74528 함수/공식
New 다중조건 만족하는 결과를 가져오고싶습니다 도와주세요 ㅠㅠ 엑셀파일첨부파일 (7)
말하지마00 | 2024.10.29 | 추천 0 | 조회 88
말하지마00 2024.10.29 - 88
74526 함수/공식
New 열과 행으로 정렬된 데이터를 같은 행으로 표시하려고 합니다. 엑셀파일 (2) 답변완료
깐부 | 2024.10.29 | 추천 0 | 조회 67
깐부 2024.10.29 - 67
74521 함수/공식
New B시트에서 A시트 항목 제품 및 수량 가져오는법좀 부탁드려요 첨부파일 (2)
Moto | 2024.10.29 | 추천 0 | 조회 70
Moto 2024.10.29 - 70
74520 VBA
New VBA 런타임 오류 관련 질문 첨부파일 (1)
angelriun | 2024.10.29 | 추천 0 | 조회 54
angelriun 2024.10.29 - 54
74518 함수/공식
New 두 시트에서 교집합 찾기 (3)
우파루파 | 2024.10.29 | 추천 0 | 조회 80
우파루파 2024.10.29 - 80
74516 구글시트
New 렌덤으로 배치 할수 있는 방법이 있을까요? 첨부파일 (8)
피망이 | 2024.10.29 | 추천 0 | 조회 70
피망이 2024.10.29 - 70
74513 함수/공식
New 엑셀로 명리를 정리하던 중에.. 엑셀파일 (7)
Ballad | 2024.10.29 | 추천 0 | 조회 98
Ballad 2024.10.29 - 98
74512 함수/공식
New 오빠두 강의인데 생각이 안나서 미치겠습니다. ㅠ (2)
Protoss | 2024.10.29 | 추천 0 | 조회 95
Protoss 2024.10.29 - 95