
我使用的是 Excel 2007。透過使用Vlookup 選擇A1 中的日期作為查找值,工作表2 連結到工作表1 中的儲存格A1 和B1。 Excel 檔案每天都會使用,儲存格 A1 和 B1 內容每天都會變更。表 2 需要在儲存格 A1 和 B1 中記錄一年的所有日期和金額
我的問題:
1. 我如何建立資料庫來每天捕獲 A1 和 B1 中的先前日期和金額,因為 A1 中的日期不斷變化,因為它是每天的關鍵。
例如 :-
2015 年 3 月 14 日(儲存格 A1),儲存格 B1 中的數字為 3,333 美元。因此,資料庫擷取了日期 14/3/2015 和資料庫表 2 中的 $3,333。
第二天,15/3/2015,儲存格 A1 內容現已變更為 15/3/2015,B1 顯示數字 $5,555
我的挑戰是如何將表 2 中的日期和值保留在資料庫中,因為我只能取得當天的一個日期和值。
老實說我不懂VBA。
答案1
這只是稍微有點棘手,因為您想要複製兩個單元格。通常,您可以使用該Worksheet_Change
事件來捕獲單元格發生的任何變化。但是,您需要等到兩個儲存格都發生變更。我編寫此程式碼是為了等待單元格C1
更改,而不是強制執行某些規則,您必須按正確的順序更改它們,然後只觀察最後一個單元格。我的想法是您的用戶可以編輯A1
然後B1
輸入任何事物然後C1
代碼就會觸發。您可以使用資料驗證新增一個下拉式選單,C1
該下拉式選單只有一個選項,例如「Go」。每當 的值發生變更時,下面的程式碼都會將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 宏,該宏將自動執行您寫下的步驟。