[英]VBA Excel autoincrement of cell number in the formula when new worksheets are added
下午好,
我想在添加新工作表時自動更改公式。 單元格值將大致每 13 步更改一次,它們出現在 excel IF 語句中。 正如您在下圖中看到的那樣,我希望有 13 步的增量,因為公式將引用位於 NIM & BADGER 表中每 13 步以下的單元格。 在表 CAB1 中,這是 G33,在表 CAB2 中應該是 G46,在表 CAB3 - G59 中,依此類推......
我的公式是基於 IF 語句的,所以可以按照這里的解決方案寫成 VBA:
接下來,我需要每 13 步更換一次單元格。 我在這里發現了一些類似的問題和解決方案:
我嘗試用以下代碼編寫它:
Sub Value()
Dim i As Long
Dim xNumber As Long, xValue As Long
Dim xName As String
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = Sheets("CAB1")
xNumber = Sheets("NIM & BADGER").Range("R27").Value
xValue = 33
For i = 1 To Number
ws.Copy After:=ActiveWorkbook.Sheets(ws.Index + i - 1)
ActiveSheet.Name = "CAB" & i + 1
Sheets("CAB" & i + 1).Range("E43").Formula = "=IF('NIM & BADGER'!G" & xValue + (13 * i) & "=0,"",'NIM & BADGER'!G" & xValue + (13 * i) & ")"
Next
ws.Activate
Application.ScreenUpdating = True
End Sub
我有一個錯誤:應用程序定義的或對象定義的錯誤
調試器指向以下行:
Sheets("CAB" & i + 1).Range("E43").Formula = "=IF('NIM & BADGER'!G" & xValue + (13 * i) & "=0,"",'NIM & BADGER'!G" & xValue + (13 * i) & ")"
添加一個或多個工作表時,如何自動更改這些公式(單元格編號)?
衷心感謝任何幫助。
更新:
我玩了一些引號,但結果保持不變......
Sheets("CAB" & i + 1).Range("E43").Formula = "=IF('NIM & BADGER'!G" & xValue + (13 * i) & "=0,'','NIM & BADGER'!G" & xValue + (13 * i) & "')"
你可以把它寫成一個公式。 雖然它不是很漂亮,但它會起作用:
=IF(OFFSET('NIM & BADGER',$G$1,(NUMBERVALUE(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+4,255))*13 )+19,0,1,1)=0,"",OFFSET('NIM & BADGER',$G$1,(NUMBERVALUE(MID(CELL("filename",A1),FIND("]",CELL( "文件名",A1))+4,255))*13)+19,0,1,1))
編輯:使您的 VBA 代碼工作。 嘗試這個:
Sub Value()
Dim i As Long
Dim xNumber As Long, xValue As Long
Dim xName As String
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = Sheets("CAB1")
xNumber = Sheets("NIM & BADGER").Range("R27").Value
xValue = 33
For i = 1 To xNumber
ws.Copy After:=ActiveWorkbook.Sheets(ws.Index + i - 1)
ActiveSheet.Name = "CAB" & i + 1
Sheets("CAB" & i + 1).Range("E43").Formula = "=IF('NIM & BADGER'!G" & xValue + (13 * i) & "=0,"""",'NIM & BADGER'!G" & xValue + (13 * i) & ")"
Next
ws.Activate
Application.ScreenUpdating = True
End Sub
正如我試圖在下面解釋的那樣,您有兩個問題:
希望現在很清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.