p314
4번 판매부의 팀별 기본급 합계
>=1 이라는 표현이 나오는 이유를 모르겠습니다.
그냥 =TRUE라고 표현을 하면 왜 안되는 것인가요?
그리고 >=1 이 TRUE를 나타낸다면 =0은 FALSE를 나타내는 건가요?
p379
2번 <입력>버튼 클릭 프로시저
⑦Cells(입력행,5)=format(cells(입력행,4) * cells(참조행,9), “#,###”)
말고
=format( txt사용시간 * cells(참조행,9), “#,###”
이라고 입력해도 될까요?
그리고 위에서 val(txt사용시간) 이라고 숫자로 변환을 시켜놨으면
txt사용시간* cells(참조행,9) 이라고 써야하나요?
아님 val(txt사용시간) * cells(참조행,9 이라고 써야하나요?
아님 둘다 상관없는 건가요?
p406
2.<조회>버튼 클릭 프로시저
for each next문을 아예 이해를 못하겠습니다.
도와주세요
안녕하세요.
1.
IFERROR 함수는 문제에서 사용하라고 제시했습니다. 그래서 부서에 판매가 포함되었는지 여부를 확인해서
포함되지 않으면 에러를 표시하도록 사용한 것입니다.
IFERROR(FIND("판매",$A$20:$A$39)>=1,FALSE)
find 함수는 지정된 범위에서 "판매"가 있는지를 찾아,
있다면 "판매"가 있는 위치를 결과값으로 반환합니다.
find 함수의 결과값이 1 이상이라는 것은 지정된 범위에 "판매"가 있다는 의미이므로
find 함수의 결과를 1 이상인지를 비교하는 것입니다.
FIND("판매",$A$20:$A$39)>=1 가 error라면(문자를 찾지 못하면 오류) FALSE를 반환하는 것입니다.
2. 어떤 방법으로 작성하시든 정확한 결과가 나오면 상관이 없습니다.
3.
스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
- aa 는 변수명으로 다른 것으로 지정하셔도 상관 없습니다. 임의로 지정한 것이 맞습니다.
- FOR EACH~NEXT : 컬렉션에 포함된 개체의 수만큼 명령 코드를 반복 실행하는 명령문입니다. For Each aa In Range("b4:b19") 이렇게 작성하면 b4:b19 영역의 개체 수 즉, 셀의 수인 16번을 반복 수행하게 되는 것입니다.
- IF AA.VALUE=TXT원아명 : 앞에 For Each aa In Range("b4:b19")에서 b4:b19 영역의 각 셀의 값이 하나씩 aa 변수에 저장이 됩니다. 그랬을 때 현재 aa 변수에 들어 있는 값(value)이 txt원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.
-exit for를 If ~ End if 사이에 넣는 것은 if 문의 조건을 만족할 때만 For문을 빠져나가라는 것입니다. 그런데 exit for를 End if 다음에 입력하면 if 문의 조건과는 상관없이 for문을 처음 실행했을 때 무조건 for 문을 빠져나게 되므로 정상적으로 실행이 안되는 것입니다.
참조행 = 참조행 + 1
고객명을 입력한 후 [고객조회] 버튼을 클릭하면 d4:d7 범위에서 동일한 고객명을 찾습니다.
해당 고객명을 찾았을 경우 그 고객에 대한 고객등급, 매출금액, 결제방식 등을 폼에 표시해야 합니다.
참조행은 해당 고객명과 같은 행에 있는 고객등급, 매출금액, 결제방식을 폼에 표시하기 위해 사용하는 것입니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.
첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.
좋은 하루 되세요.
-
관리자2019-12-10 20:36:36
안녕하세요.
1.
IFERROR 함수는 문제에서 사용하라고 제시했습니다. 그래서 부서에 판매가 포함되었는지 여부를 확인해서
포함되지 않으면 에러를 표시하도록 사용한 것입니다.
IFERROR(FIND("판매",$A$20:$A$39)>=1,FALSE)
find 함수는 지정된 범위에서 "판매"가 있는지를 찾아,있다면 "판매"가 있는 위치를 결과값으로 반환합니다.
find 함수의 결과값이 1 이상이라는 것은 지정된 범위에 "판매"가 있다는 의미이므로find 함수의 결과를 1 이상인지를 비교하는 것입니다.
FIND("판매",$A$20:$A$39)>=1 가 error라면(문자를 찾지 못하면 오류) FALSE를 반환하는 것입니다.
2. 어떤 방법으로 작성하시든 정확한 결과가 나오면 상관이 없습니다.
3.
스위치 : 스위치는 TXT원아명에 입력한 원아가 b4:b19 영역에 있는지, 없는지를 판단하는 것입니다. 맨 처음 스위치에 0을 넣은 후 IF 문 안에 '스위치 = 1'를 넣었습니다. 그런 다음 맨 마지막에 ' If 스위치 = 0 Then'에서 스위치가 0인지를 비교합니다. 맨 처음에 넣은 0이 그대로 있으면 동일한 원아가 없어 '스위치 = 1'를 한번도 수행하지 않은 것이고, 스위치 값이 1로 변경되었다면 동일한 데이터가 있었다는 의미입니다.
- aa 는 변수명으로 다른 것으로 지정하셔도 상관 없습니다. 임의로 지정한 것이 맞습니다.
- FOR EACH~NEXT : 컬렉션에 포함된 개체의 수만큼 명령 코드를 반복 실행하는 명령문입니다. For Each aa In Range("b4:b19") 이렇게 작성하면 b4:b19 영역의 개체 수 즉, 셀의 수인 16번을 반복 수행하게 되는 것입니다.
- IF AA.VALUE=TXT원아명 : 앞에 For Each aa In Range("b4:b19")에서 b4:b19 영역의 각 셀의 값이 하나씩 aa 변수에 저장이 됩니다. 그랬을 때 현재 aa 변수에 들어 있는 값(value)이 txt원아명 컨트롤에 입력된 값과 같은지를 비교하는 것입니다.
-exit for를 If ~ End if 사이에 넣는 것은 if 문의 조건을 만족할 때만 For문을 빠져나가라는 것입니다. 그런데 exit for를 End if 다음에 입력하면 if 문의 조건과는 상관없이 for문을 처음 실행했을 때 무조건 for 문을 빠져나게 되므로 정상적으로 실행이 안되는 것입니다.
참조행 = 참조행 + 1
고객명을 입력한 후 [고객조회] 버튼을 클릭하면 d4:d7 범위에서 동일한 고객명을 찾습니다.
해당 고객명을 찾았을 경우 그 고객에 대한 고객등급, 매출금액, 결제방식 등을 폼에 표시해야 합니다.
참조행은 해당 고객명과 같은 행에 있는 고객등급, 매출금액, 결제방식을 폼에 표시하기 위해 사용하는 것입니다.
처음에 참조행에 3을 넣고, for문의 첫번째에 참조행=참조행+1을 실행하면 참조행은 4가 됩니다.
이 4는 워크시트에서 고객명이 들어 있는 범위의 첫번째 행을 의미하는 것입니다.
즉, 첫번째 고객이 들어 있는 '김현진'은 워크시트에 4행에 입력되어 있습니다.
첫번째 데이터를 비교할 때는 참조행이 4, 두번째 데이터를 비교할 때는 for 문 안에 들어 있는
'참조행=참조행+1'를 또 실행하게 되므로 참조행은 5 이렇게 1씩 증가하게 되는 것입니다.
좋은 하루 되세요.