返回列表 上一主題 發帖

如何避免儲存格公式,因『剪下』『貼上』而被修改?

如何避免儲存格公式,因『剪下』『貼上』而被修改?

如何避免儲存格公式,因『剪下』『貼上』而被修改?

sheet2 a1= Sheet1!a1
sheet2 b1= Sheet1!b1
sheet2 c1= Sheet1!c1

sheet2 a2= Sheet1!a2
sheet2 b2= Sheet1!b2
sheet2 c2= Sheet1!c2

以此類推

我要固定 sheet2 的公式,不能因為 sheet1 的儲存格 『剪下』『貼上』而被修改


一、我試了將 sheet2 工具->保護->保護工作表

結果『剪下』『貼上』 公式還是變了


二、我試著用indirect("Sheet1!a1",1)的方式來取代,公式是不會變了,

相關公式共有 15453個, 程式容量卻大了30%,多了750k ,整個檔案的開啟速度也變慢了

為了產生15453個公式,我還刻意用 vba 來產生。



三、目前我還能想到的就是在寫個巨集,在程式開啟動,主動更新整個 sheet2的公式,

這樣的方式,不能確保開啟後公式不被使用者修改

使用者下次重新開啟才能確保sheet2 公式正確。


還有更好的做法嗎?
公開經驗,創造智慧(我又不靠這過活)

回復 1# eigen


   Try this:
  1. Private Sub Worksheet_Activate()
  2. Application.ScreenUpdating = 0
  3.     With Sheets(1)
  4.         [a1:c1] = .[a1:c1].Value
  5.     End With
  6. Application.ScreenUpdating = 1
  7. End Sub
複製代碼

TOP

回復 2# ikboy


    謝謝,不能直接填值,只能公式

我試了 indirect offset index

目前看來 index 最省空間~~  index < offset < indirect

而且直接填寫 1 2 3 4 會比用 row() column() 省空間

我還是做一個被動方式來處理,也許就像上面的 worksheet_activate 時才更新一次所有公式~~
公開經驗,創造智慧(我又不靠這過活)

TOP

回復 3# eigen


    若儲存格是相連續的,可以使用陣列公式。
譬如:
{=Sheet1!A1:B10}

TOP

如果公式就這麼簡單的單一儲存格取值,
可試試"定義名稱"!!
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

        靜思自在 : 對父母要知恩,感恩、報恩。
返回列表 上一主題