엑셀 데이터베이스 업데이트 :: 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 함수 중 하나입니다. 더 다양한 종류의 데이터베이스 관련 함수는 아래 링크에서 자세히 확인할 수 있습니다.
실전 사용 예제
- '직원DB' 시트에서 7번 ID의 값을 갱신하기
'시트명 : 직원DB
'필드 : ID, 이름, 부서, 직급, 나이
Update_Record ThisWorkBook.WorkSheets("직원DB"), 7, "김하늘", "인사팀", "대리", 40 - '직원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
명령문 동작원리 단계별 알아보기
- 변수를 선언합니다.
Dim cRow As Long Dim i As Long: Dim j As Long Dim ID As Variant
- 받아온 ID가 숫자값일 경우, 정수 형태의 숫자로 변경합니다.
If IsNumeric(vaParamArr(0)) = True Then ID = CLng(vaParamArr(0)) Else ID = vaParamArr(0)
- 데이터베이스의 첫번째 열을 참조하여 데이터를 하나씩 돌아가며 ID와 동일한 값을 찾습니다.
With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row For j = 1 To cRow If .Cells(j, 1).Value = ID Then
- 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
- '직원DB' 시트에서 7번 ID의 값을 갱신하기