엑셀 데이터베이스 업데이트 :: Update_Record 함수 사용법

시트의 데이터베이스를 업데이트하는 Update_Record 함수의 사용법 및 동작원리를 살펴봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 04. 15. 16:40
URL 복사
메모 남기기 : (2)

엑셀 데이터베이스 업데이트 :: Update_Record 함수 사용법

엑셀 Update_Record 명령문 목차 바로가기
요약

엑셀 Update_Record 함수는 ID를 참조하여 시트의 데이터베이스를 업데이트하는 사용자 지정 함수입니다.

명령문 구문
Update_Record 시트, ID, [값1], [값2], ...
사용된 인수 및 변수 알아보기
인수 설명
시트
[WorkSheet]
데이터베이스를 업데이트 할 대상 시트입니다. 만약 현재 통합문서의 특정 시트를 시트명으로 지정하려면 시트를 아래와 같이 입력합니다.

ThisWorkBook.WorkSheets("시트명")

ID
[Variant]
업데이트 할 데이터를 참조할 ID 입니다. 숫자 또는 문자 모두 입력할 수 있습니다.
값1, 값2, ...
[Variant, 선택인수]
업데이트 할 데이터를 머릿글 순서에 맞추어 차례대로 입력합니다. 중간에 업데이트 하지 않을 값이 있을 경우, 공백으로 건너뛰어서 입력할 수 있습니다.

예제파일 다운로드

  • [엑셀VBA함수] Update_Record 명령문
    예제파일
상세 설명

엑셀 Update_Record 함수는 시트에 입력된 데이터베이스를 지정한 ID를 참조하여 업데이트하는 사용자 지정 함수입니다. 업데이트 할 데이터를 참조할 수 있는 ID는 반드시 데이터베이스의 첫번째 열에 입력되어 있어야 합니다. 또한 데이터베이스는 시트의 A1셀부터 시작되어야 합니다.

ID는 숫자 또는 문자 형태로 모두 입력할 수 있습니다. 만약 중복되는 ID가 있을경우, 위에서부터 첫번째에 위치한 ID를 참조하여 값을 업데이트 합니다.

Update_Record 함수는 데이터베이스 관련 VBA 함수 중 하나입니다. 더 다양한 종류의 데이터베이스 관련 함수는 아래 링크에서 자세히 확인할 수 있습니다.

실전 사용 예제
  1. '직원DB' 시트에서 7번 ID의 값을 갱신하기
    '시트명 : 직원DB
    '필드 : ID, 이름, 부서, 직급, 나이
    Update_Record ThisWorkBook.WorkSheets("직원DB"), 7, "김하늘", "인사팀", "대리", 40
  2. '직원DB' 시트에서 7번 ID의 값 중 직급 정보만 갱신하기
    '시트명 : 직원DB
    '필드 : ID, 이름, 부서, 직급, 나이
    Update_Record ThisWorkBook.WorkSheets("직원DB"), 7, , , "대리"

엑셀 데이터베이스 업데이트, Update_Record 명령문 동작원리

Update_Record 명령문 전체 코드
Sub Update_Record(WS As Worksheet, ParamArray vaParamArr() As Variant)
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'수정 및 배포 시 출처를 반드시 명시해야 합니다.
 
'■ Update_Record 함수
'■ 시트의 데이터베이스를 업데이트 합니다. 업데이트 할 데이터의 첫번째 값은 반드시 ID여야 합니다.
'■ 사용방법
'Update_Record 시트, ID, 값1, 값2, ...
'▶ 인수 설명
'_____________WS                : 데이터베이스를 업데이트 할 시트입니다.
'_____________ID                : 업데이트 할 데이터를 대표하는 ID 입니다. ID는 데이터베이스의 첫번째 열에 입력되어 있어야 합니다.
'_____________값1, 값2, ...     : 업데이트 할 데이터를 머릿글 순서에 맞추어 차례대로 입력합니다. 업데이트하지 않을 값은 공백으로 건너 뛸 수 있습니다.
'###############################################################
 
Dim cRow As Long
Dim i As Long: Dim j As Long
Dim ID As Variant
 
If IsNumeric(vaParamArr(0)) = True Then ID = CLng(vaParamArr(0)) Else ID = vaParamArr(0)
 
With WS
    cRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For j = 1 To cRow
        If .Cells(j, 1).Value = ID Then
            For i = 1 To UBound(vaParamArr)
                If Not IsMissing(vaParamArr(i)) Then .Cells(j, i + 1).Value = vaParamArr(i)
            Next
        End If
    Next
End With
 
End Sub
명령문 동작원리 단계별 알아보기
  1. 변수를 선언합니다.
    Dim cRow As Long
    Dim i As Long: Dim j As Long
    Dim ID As Variant
  2. 받아온 ID가 숫자값일 경우, 정수 형태의 숫자로 변경합니다.
    If IsNumeric(vaParamArr(0)) = True Then ID = CLng(vaParamArr(0)) Else ID = vaParamArr(0)
  3. 데이터베이스의 첫번째 열을 참조하여 데이터를 하나씩 돌아가며 ID와 동일한 값을 찾습니다.
    With WS
    cRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For j = 1 To cRow
    If .Cells(j, 1).Value = ID Then
  4. ID가 일치하는 데이터의 값을 하나씩 업데이트 한 뒤, 함수를 종료합니다.
    For i = 1 To UBound(vaParamArr)
    If Not IsMissing(vaParamArr(i)) Then .Cells(j, i + 1).Value = vaParamArr(i)
    Next
    End If
    Next
    End With
5 2 투표
게시글평점
2 댓글
Inline Feedbacks
모든 댓글 보기
2
0
여러분의 생각을 댓글로 남겨주세요.x