|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
=Format([월별급여]-DateSerial(IIf(Mid([주민등록번호],7,1)<3,"19" & Left([주민등록번호],2),"20" & Left([주민등록번호],2)),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)-1),"yy")
위수식은 정확하지가 않은거 같아요 ㅠ
*고용일 대신해서 주민등록번호(470201-1234556)가 있으면 앞부분(1947/02/01)만 발췌해서 만나이 구하는게 가능할까요?
아무리 생각해봐도 잘 안되네요 ㅠ
Public Function Serviceyear(고용일 As Date, 월별급여 As Date) As Variant
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim m As Integer
Dim n As Integer
i = DateDiff("m", 고용일, 월별급여) - 1
If Right(고용일, 2) - Right(월별급여, 2) - 1 < 0 Then j =1 Else
j = 0
End If
k = i + j
l = Int(k / 12)
m = k - l * 12
n = DateDiff("d", DateAdd("m", k, 고용일), 월별급여)
Serviceyear = Format(l, "00") & "y" & Format(m, "00") & "m" & Format(n, "00") & "d"
End Function
==============[대왕초보님 글에 대한 답변입니다]==============
* 주민등록번호에 "-" 기호가 포함된 경우 입니다.
* format "yy"를 이용하면 1800년대 출생자만 100을 더해주면 조건이 없더라도 계산이 됩니다.
만나이: Nz(Format(Date()-DateSerial(IIf(Mid([주민등록번호],8,1)=0 Or Mid([주민등록번호],8,1)=9,"18" & Left([주민등록번호],2),IIf(Mid([주민등록번호],8,1)=1 Or Mid([주민등록번호],8,1)=2 Or Mid([주민등록번호],8,1)=5 Or Mid([주민등록번호],8,1)=6,"19" & Left([주민등록번호],2),"20" & Left([주민등록번호],2))),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)),"yyyy"))-1900
만나이2: IIf(Mid([주민등록번호],8,1)=9 Or Mid([주민등록번호],8,1)=0,100,0)+CInt(Format(Date()-DateSerial(Left([주민등록번호],2),Mid([주민등록번호],3,2),Mid([주민등록번호],5,2)),"yy"))
Public Function Age(주민등록번호 As String) As Integer
Dim varYear As Integer
Dim varBirthDay As Date
Dim varAge As Variant
Select Case Mid(주민등록번호, 8, 1)
Case 1, 2, 5, 6
varYear = 1900 + Left(주민등록번호, 2)
Case 3, 4, 7, 8
varYear = 2000 + Left(주민등록번호, 2)
Case 9, 0
varYear = 1800 + Left(주민등록번호, 2)
End Select
varBirthDay = DateSerial(varYear, Mid(주민등록번호, 3, 2), Mid(주민등록번호, 5, 2))
varAge = DateDiff("yyyy", varBirthDay, Now)
If Date < DateSerial(Year(Now), Month(varBirthDay), Day(varBirthDay)) Then
varAge = varAge - 1
End If
Age = CInt(varAge)
End Function |
|