
有沒有一種方法可以使公式傳回值的數字而不使用剪下和貼上方法。
因為我每天必須在大約一百個不同的細胞上執行此操作。所以剪下和貼上不是一個可行的方法。有沒有什麼捷徑或某種奇怪的方法可以避免這種情況。
為了簡化...我需要 B1 = A4 然後我將更新 A4 新增的日期數據,然後我需要 B2 = A4 - B1 的舊值。
為此,B1 需要成為一個值,而不是引用 A4 的公式,因為我需要能夠每天更新 A4。因此,每天之後,下一個單元格需要成為一個值。
請記住,我無法一次又一次地複製和貼上
有人能幫我嗎!
答案1
這假設列乙和細胞A4開始時完全是空的。將下列事件巨集放置在工作表程式碼區域中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A4 As Range, B1 As Range, n As Long
Set A4 = Range("A4")
Set B1 = Range("B1")
If Intersect(A4, Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
If B1 = "" Then
B1 = A4
Else
n = Cells(Rows.Count, "B").End(xlUp).Row
Cells(n + 1, "B").Value = Cells(n, "B").Value - A4
End If
Application.EnableEvents = True
End Sub
因為是工作表程式碼,所以很容易安裝並自動使用:
- 右鍵單擊 Excel 視窗底部附近的選項卡名稱
- 選擇查看代碼 - 這將打開一個 VBE 窗口
- 將內容貼進去並關閉 VBE 窗口
如果您有任何疑慮,請先在試用工作表上嘗試。
如果儲存工作簿,巨集將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx
到消除宏:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉VBE視窗
要了解有關巨集的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有關事件巨集(工作表程式碼)的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/event.htm
必須啟用巨集才能使其工作!
答案2
對於具有這樣的設定模式的東西,可以使用相對引用創建命名範圍(“NR”),並在創建命名範圍時仔細選擇活動單元格,然後每天使用它來粘貼值。
我的意思是set pattern
,如果 7 月 1 日「發生」在單元格 B1、H4 和 XX9 中,那麼 7 月 2 日就發生在這些單元格的正下方:B2、H4 和 XX10。依此類推,貫穿任何給定月份。第二天絕對不會讓它去 B2、H38、XX10。
您可以在公式編輯欄左側的方塊中選擇命名範圍。顯示您的活動儲存格的那個。一旦選擇,您只需Copy
,然後Paste|Special|Values
一步完成。因此,在框中選擇命名範圍,然後複製並貼上。全做完了。
要使其工作,請使用相對引用(無 $B$1:使用 B1),因此如果在 B1 中它將執行此操作,但如果選擇 B2,它將執行 B2。
實現該工作的另一個步驟是在建立 NR 期間將第一個單元設定為活動單元。如果你是它下面的一個儲存格,它會選擇B2,而不是B1!
建立列出該範圍內的儲存格的字串,但您必須這樣做,即使您必須鍵入所有「大約一百個」儲存格位址。這只是一次。利用將字串組合在一起的許多技巧可以提供幫助。完成後,不要透過檢查小段文字來檢查它!選擇它並查看它是否選擇了所有正確的儲存格。這種方式更容易準確地檢查:類似於比較兩頁紙,逐個字符看看它們是否相同,而不是將一頁放在另一頁上,將它們放在燈光下,看看是否有任何差異。後者不僅更容易,而且更準確。
在 NR 函數外部建立字串,然後將其複製並貼上到新 NR 的「值」方塊中。無需在普通電子表格頁面的簡單、充滿工具的環境之外進行輸入。
最後,Windows 的怪異之處,而不是 Excel 的怪異之處:NR 中的最後一個儲存格位址是它將開始的儲存格位址,而不是第一個儲存格位址。如果你通過了,它會滾到下一個第一個TAB
,但…什麼?因此,列出以 #2、#3、... #last one、#1 開頭的儲存格,它將包含您希望首先選擇的活動儲存格。
在這裡,這與您的複製和貼上無關,只與完成後「就在您所在的位置」開始進一步的工作有關。不過,其他用途,其他電子表格,考慮起來可能會很方便。
重申一下,每天您都會在要貼上值的儲存格中選擇一個儲存格,然後選擇範圍,然後複製並貼上。就這樣。不需要宏,因此不需要學習,並且如果有任何變化,可以輕鬆編輯或添加範圍。