返回列表 上一主題 發帖

[發問] 請問代碼中輸入公式的表達方式

[發問] 請問代碼中輸入公式的表達方式

下面兩種方式結果依樣
以前我都是用第2種(用錄製也是這種),因為在書上看到的就是第2種的表達方式
偶然在某網站看到第1種這種跟我們平常在儲存格輸入方式一樣
原本以為第1種是無法運行,結果卻是一樣

想請問第一種算正常的表達方式嗎?有沒有需要注意的地方?

   第1種 [j6].Resize(n, 1) = "=date(left(right($g6,11),4),left(right($g6,7),2),left(right($g6,5),2))"

   第2種 [j6].Resize(n, 1) = "=DATE(LEFT(RIGHT(RC7,11),4),LEFT(RIGHT(RC7,7),2),LEFT(RIGHT(RC7,5),2))"
字典兩各字 還真難理解

回復 6# 准提部林
兩種格式也可以考慮用 Application.ConvertFormula 轉換哦,這樣就不用每次錄製了
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 5# freeffly


其實在版上幫網友解題時,我還是會常用第1種,因為〔容易閱讀〕公式的涵意;
 
至於實際使用時,我會將〔標題列〕的第1格〔定義名稱〕,
例如:標題列為〔A5:L5〕,則將〔$A$5〕定義名稱為〔RngHead〕,
[RngHead].cells(2, 8).FormulaR1C1="錄製公式1"  → H6公式
[RngHead].cells(2, 10).FormulaR1C1="錄製公式2"  → J6公式
∼或更多不同公式∼

這樣在〔標題列〕的上方〔插入列〕或〔刪除列〕,都不須再進入程式碼去修改,而能正常運作∼∼

TOP

回復 4# 准提部林

    謝謝版主~
    原來如此,看來第一種還是盡量不要用,雖然能比較快寫出
字典兩各字 還真難理解

TOP

本帖最後由 准提部林 於 2015-9-23 16:02 編輯

回復 3# freeffly

換個假設:
因某種需求, 必須將資料表往下移2列,原來在〔j6〕下公式,現則為〔j8〕,
這時,必須將公式文字的〔列參照〕全部修改才不會出錯,
[j8].Resize(n ,1) = "=date(left(right($G8,11),4),left(right($G8,7),2),left(right($G8,5),2))"
 
而第2種則只要修改公式首格的位置即可:
[j8].Resize(n ,1).FormulaR1C1 = ”不用改”
 
程式碼視實況取用合適即可,不必拘泥用哪一種,但謹慎的程式設計者,會較慎重考慮而已∼∼

TOP

回復 2# 准提部林


    大概懂意思,如果我使用Resize一次輸入他會是正確的,沒有所謂位移問題嗎
字典兩各字 還真難理解

TOP

本帖最後由 准提部林 於 2015-9-23 15:26 編輯

第1種為〔Formula〕模式:必須在建立公式的〔起始格〕填公式,它不會自動產生〔位移〕參照,
[j6] = "=date(left(right($G6,11),4),left(right($G6,7),2),left(right($G6,5),2))" → OK
[j7] = "=date(left(right($G6,11),4),left(right($G6,7),2),left(right($G6,5),2))" → 看一下[$G6] 不會自動變成〔$G7〕

第2種為〔FormulaR1C1〕模式:可以在同欄任一格填公式,自動位移參照(錄製取得,準確性最安全)
[j6].FormulaR1C1= "=DATE(LEFT(RIGHT(RC7,11),4),LEFT(RIGHT(RC7,7),2),LEFT(RIGHT(RC7,5),2))"
[j7].FormulaR1C1= "=DATE(LEFT(RIGHT(RC7,11),4),LEFT(RIGHT(RC7,7),2),LEFT(RIGHT(RC7,5),2))"

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題