簡體   English   中英

VBA改變了復雜的公式

[英]VBA changes complex formula

我使用帶有單選按鈕的代碼(參見最后一個代碼)在行15中插入一個新行,它將舊數據向下推,同時將相同的公式復制到第15行(之前的第15行)單擊按鈕。

單擊按鈕后,我可以在E15中輸入3位數據,然后按Enter鍵,所有公式將根據在E15中輸入的內容在第15行計算。

現在我喜歡代碼的執行方式,但由於某些原因,CG15中的公式發生了變化

=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF14:CF$14,MATCH(9.99999999999999E+307,CF14:CF$14)):CF15),""),"")

=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF13:CF$14,MATCH(9.99999999999999E+307,CF13:CF$14)):CF15),""),"")

我無法弄清楚問題是在CG15中的代碼或公式中這里是一個“測試”文件,下面是代碼

測試表

Sub AddNewDrawing()
'
' AddNewDrawing Macro
'

'
    Rows("15:15").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A16:ua16").Select
    Selection.AutoFill Destination:=Range("A15:ua16"), Type:=xlFillDefault
    Range("A15:ua16").Select
    Range("E15").Select
    Selection.ClearContents
End Sub

這可能是簡單的修復,但我很難過。 我需要公式保持不變而不改變。

以下是有關每個代碼的詳細信息。 CF15列具有此公式,如果滿足條件,則返回1。

=IF(COUNTIF($AW16:$CC18,O15),1,IF(COUNTIF($AW16:$CC18,P15),1,IF(COUNTIF($AW16:$CC18,Q15),1,"")))

列CG15具有此公式,其計算列CF15中的每個1之間的跳過(空白單元格)。 注意:CG $ 14有一個永久的0(零),作為計數開頭的占位符。

=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF14:CF$14,MATCH(9.99999999999999E+307,CF14:CF$14)):CF15),""),"")

謝謝

當您插入新行15時,CG15中的公式被下推到CG16,並且參考行15的公式中的相對地址(例如CF15)變為行16(例如CF16)。

但是,像CF14一樣小於15的相對地址不受行插入的影響。 當你將公式從CG16“回填”到CG15時,它們都會受到影響,因此CF14:CF $ 14變為CF13:CF $ 14,就像CF16恢復到原來的CF15一樣。

將公式更改為不受行插入或回填之間的相對差異影響的值。

行相對CF14可以用CG15寫成,

index(CF:CF, row()-1)

所以這使你的公式,

=IF(CF15=1, COUNTBLANK(INDEX(CF$14:index(CF:CF, row()-1), MATCH(1e99, CF$14:index(CF:CF, row()-1))):CF15), text(,))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM