標題:
[發問]
請問FormulaR1C1該如何修改才能只記錄"值"
[打印本頁]
作者:
JackieKM
時間:
2016-7-19 00:41
標題:
請問FormulaR1C1該如何修改才能只記錄"值"
請教高手大大
以下是我的程式
.Range(Cells(Pos, 10), Cells(Pos, 20)).FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
執行後儲存格顯示的計算後的值,但點選儲存格卻是公式(如=A5-A4)
請問我該如何修正才能讓儲存格只記錄"值"就好,感謝。
作者:
c_c_lai
時間:
2016-7-19 07:46
回復
1#
JackieKM
.Range(Cells(Pos, 10), Cells(Pos, 20)).FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
.Range(Cells(Pos, 10), Cells(Pos, 20)) = .Range(Cells(Pos, 10), Cells(Pos, 20)).Value
作者:
JackieKM
時間:
2016-7-19 09:45
回復
2#
c_c_lai
c_c_lai大大你好,謝謝您幫忙
但我將程式改為 .Range(Cells(Pos, 10), Cells(Pos, 20)).Value = "=RC[-5]-R[-1]C[-5]"後,
情況還是一樣,點選儲存格,裡面出現的還是公式,
請容我解釋一下,我想做的是下面的計算,但希望的是計算後只記錄"值"就好,
儲存格A4 - A3,將得到的值記錄在H4;儲存格B4 - B3,將得到的值記錄在I4, 等等.....
希望大大能幫忙指點,再次感謝。
作者:
c_c_lai
時間:
2016-7-19 09:52
本帖最後由 c_c_lai 於 2016-7-19 09:53 編輯
回復
3#
JackieKM
你會錯意了:
.Range(Cells(Pos, 10), Cells(Pos, 20)).FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
.Range(Cells(Pos, 10), Cells(Pos, 20)) = .Range(Cells(Pos, 10), Cells(Pos, 20)).Value
複製代碼
這兩行它是連續的。
換句話說,你原先的
.Range(Cells(Pos, 10), Cells(Pos, 20)).FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
複製代碼
的下一行再插入
.Range(Cells(Pos, 10), Cells(Pos, 20)) = .Range(Cells(Pos, 10), Cells(Pos, 20)).Value
複製代碼
測試便知。
作者:
JackieKM
時間:
2016-7-19 10:27
回復
4#
c_c_lai
c_c_lai大大你好,再次謝謝您指點,
不好意思,是我誤會你的意思了,經過更改後確定OK,但還有以下兩點問題請教,
1) 原本的儲存格為小數點兩位數,但經過相減後(假設兩者相減後值為 0.1),得到的結果卻出現0.0999999999999801
2) 使用R1C1時,FormulaR1C1紀錄的為公式,不知是否有其他方式可以直接紀錄"值",會這樣問是因為我想簡化程式,謝謝。
作者:
c_c_lai
時間:
2016-7-19 10:36
本帖最後由 c_c_lai 於 2016-7-19 10:42 編輯
回復
5#
JackieKM
.Range(Cells(Pos, 10), Cells(Pos, 20)).FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
.Range(Cells(Pos, 10), Cells(Pos, 20)).NumberFormatLocal = "#0.00"
.Range(Cells(Pos, 10), Cells(Pos, 20)) = .Range(Cells(Pos, 10), Cells(Pos, 20)).Value
複製代碼
或者是
With .Range(Cells(Pos, 10), Cells(Pos, 20))
.FormulaR1C1 = "=RC[-5]-R[-1]C[-5]"
.NumberFormatLocal = "#0.00"
.Value = .Value
End With
複製代碼
作者:
准提部林
時間:
2016-7-19 13:28
.FormulaR1C1 = "=
ROUND(
RC[-5]-R[-1]C[-5],2
)
"
避免有浮點數, 直接在原公式加ROUND也可!
作者:
c_c_lai
時間:
2016-7-19 14:08
回復
7#
准提部林
不錯的處理方式。謝謝指點!
作者:
JackieKM
時間:
2016-7-19 14:10
回復
6#
c_c_lai
c_c_lai大大你好,再次謝謝您指點,
第一點是我沒講清楚,原本我已在儲存格格式中設定為小數點兩位數,顯示的結果也是小數點兩位數,
但點選儲存格,看到的結果卻是類似0.0999999999999801,加入NumberFormatLocal 後還是一樣,
之前此程式使用For..Next..時並無此問題,請問是因為使用R1C1的關係嗎?? 謝謝。
作者:
c_c_lai
時間:
2016-7-19 14:24
本帖最後由 c_c_lai 於 2016-7-19 14:26 編輯
回復
9#
JackieKM
當宣告 .Range(Cells(Pos, 10), Cells(Pos, 20)).NumberFormatLocal = "#0.00"
它應該會自動將該指定之 "儲存格格式" 修正為 "數值型態 小數兩位。
與 R1C1 無關。
作者:
准提部林
時間:
2016-7-19 20:34
回復
5#
JackieKM
原本的儲存格為小數點兩位數,但經過相減後(假設兩者相減後值為 0.1),得到的結果卻出現0.0999999999999801
參與計算的數值若有
小數點
, 偶會發生[
浮點數
]的結果, 儲存格格式雖設為小數2位, 看起來無異狀, 但實際數值已非原貌,
=0.011-0.01 > 結果:0.000999999999999999
所以要養成習慣套一層
ROUND
來進位, 這是EXCEL的宿命!
作者:
JackieKM
時間:
2016-7-21 13:31
回復
11#
准提部林
感謝版主的指點,實際運用沒問題,我想我已接受Excel的宿命了,謝謝。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)