
Excel 2007을 사용하고 있습니다. 날짜를 표시하는 셀 A1과 시트 1의 금액을 표시하는 셀 B1이 있는 Excel 파일이 있습니다. 시트 2의 데이터베이스에서 A1의 날짜와 금액 B1을 자동으로 업데이트해야 합니다. 시트 2는 A1의 날짜를 조회 값으로 선택하여 Vlookup을 사용하여 시트 1의 셀 A1 및 B1에 연결됩니다. 엑셀 파일은 매일 사용되며 셀 A1과 B1의 내용은 매일 변경됩니다. 시트 2에서는 1년 동안 A1 및 B1 셀에 모든 날짜와 금액을 기록해야 합니다.
내 문제:
1. A1의 날짜가 매일 중요하므로 A1의 날짜가 계속 변경되기 때문에 매일 A1 및 B1의 이전 날짜와 금액을 캡처하기 위해 데이터베이스를 구축하려면 어떻게 해야 합니까?
예를 들어 :-
2015년 14월 3일(셀 A1)의 수치는 셀 B1의 $3,333입니다. 따라서 데이터베이스는 데이터베이스의 시트 2에 2015년 14월 3일 날짜와 $3,333를 캡처합니다.
다음 날인 2015년 3월 15일 셀 A1 내용은 이제 2015년 15월 3일로 변경되었으며 B1에는 $5,555라는 수치가 표시됩니다.
내 과제는 현재 날짜에 대해서만 하나의 날짜와 값만 얻을 수 있으므로 데이터베이스의 시트 2에 날짜와 값을 모두 유지하는 방법입니다.
솔직히 저는 VBA를 모릅니다.
답변1
두 개의 셀을 복사하려고 하기 때문에 이는 약간 더 까다로워집니다. 일반적으로 Worksheet_Change
이벤트를 사용하여 셀이 변경될 때마다 이를 포착할 수 있습니다. 그러나 두 셀이 모두 변경될 때까지 기다리고 싶습니다. 올바른 순서로 변경해야 하는 규칙을 적용한 다음 마지막 셀만 관찰하는 대신 셀이 C1
변경될 때까지 기다리도록 이 글을 썼습니다. 내 생각에는 사용자가 편집한 다음 입력할 수 있다고 생각 A1
했습니다 B1
.아무것그러면 C1
코드가 실행됩니다. 데이터 유효성 검사를 사용하여 C1
"이동"과 같은 옵션이 하나만 있는 드롭다운을 추가할 수 있습니다 . 아래 코드는 값이 변경될 때마다 A1
& 값을 시트 2의 마지막 행에 복사한 다음 에서 해당 값을 지웁니다 .B1
C1
C1
VBA 편집기를 엽니다( Alt+ F11는 한 가지 방법입니다). 왼쪽의 프로젝트 탐색기 창에서 시트 1을 찾습니다. 열려 있는 모든 통합 문서와 그 안에 있는 워크시트를 표시하는 트리 메뉴가 이미 있어야 합니다. 시트를 두 번 클릭하여 코드 창을 엽니다. 아래 코드를 복사하여 붙여넣으세요. ( Worksheets("Sheet2")
"Sheet2"가 데이터를 복사하려는 두 번째 워크시트의 실제 이름이 아닌 경우 줄을 편집해야 할 수도 있습니다 .)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Not Intersect(Target, Range("C1")) Is Nothing Then
With Worksheets("Sheet2")
r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & r).Value = Range("A1").Value
.Range("B" & r).Value = Range("B1").Value
End With
Application.EnableEvents = False
Range("C1").ClearContents
Application.EnableEvents = True
End If
End Sub
(VBA 중독자에게: 나는 일반적으로 Cells
over를 사용하는 것을 선호 Range
하지만 즉시 이해할 수 없기 때문에 를 사용했습니다 Range
.)
답변2
작업을 수행하는 데 필요한 도구를 모르고 배울 수 없는 경우 유일한 대안은 수동으로 수행하는 것입니다.
그런 다음 수동으로 수행해야 했던 단계를 기록해 보세요. 이것이 자동화 방법에 대한 개요가 됩니다.
그런 다음 기록한 단계를 자동화하는 간단한 VBA 매크로를 만드는 방법에 대해 인터넷 검색을 시작하세요.