使用代码来修改Excel公式

我有一个包含22个工作表的Excel 2010工作簿。 第一个工作表被标记为DATA,其中数据由用户input。 行A1-N1包含标签。 行A2-A18包含从单元格A2开始的17个位置的2015年1月的数据,即,行2包含位置1的数据,位置3的行3等。二月份数据从第19行开始,三月份在第36行开始,等等

在每个工作表上,A1-M1是标签,2-13行是一月到十二月。 工作表#2上的单元格B2引用工作表数据上的单元格J2。 工作表#2的第2行上的其他公式在工作表DATA上的第2行上引用单元格。 工作表#2的第3行引用DATA的第19行的单元格。 在每个位置工作表的N列在单元格N2中有一个与工作表DATA上的可应用行相对应的数字。

这是我的一个公式的例子:

=(IF(ISBLANK(数据D2),! “ – ”,IF(ISERROR(DATA E2 / DATA D2), “N / A”,(DATA E2 /数据D2)))!!)。

我想要VB代码或macros?,将编辑每个工作表上的每个公式,通过replace公式中的当前数字与同一行的N列中的数字,即如果N7包含数字88代码会通过删除公式中的当前数字并replace数字88来更改该行上的任何公式。

附加信息:

在每个工作表上,列BM有不同的公式。 代码将需要为该行取N列中的数字,并将该公式中的数字replace为该行N列中的数字,对于每个工作表的每行。

目前,我必须触摸每个工作表上的每个公式,这太费时。 从四月份开始,地点将从17个增加到148个,这将需要编码进行适当的修改。

数据工作表图像

1R位置工作表图像

我不在我的工作电脑上,所以我没有机会testing这个代码,但我相信这应该做你想做的。 如果有任何问题,请告诉我,我明天上class。

Sub replace_numbers() Dim ws As Worksheet Dim c As Range Dim replace_with As Long Dim objRegex As Object 'Application.EnableEvents = False 'Application.ScreenUpdating = False 'Application.DisplayStatusBar = False 'Application.Calculation = xlCalculationManual Set objRegex = CreateObject("vbscript.regexp") With objRegex .Global = True .Pattern = "\d+" End With For Each ws In Worksheets If ws.Name <> "DATA" Then For Each c In ws.Range("B2:M13") replace_with = CLng(Intersect(ws.Columns("N"), ws.Rows(c.Row)).Value) c.Formula = objRegex.Replace(c.Formula, replace_with) Next End If Next 'Application.EnableEvents = True 'Application.ScreenUpdating = True 'Application.DisplayStatusBar = True 'Application.Calculation = xlCalculationAutomatic End Sub 

如果代码按预期方式运行,则在Application调用之前删除撇号,以便使代码运行得更快一些。

你总是可以使用像这样的东西:

 If IsEmpty(Worksheets("DATA").Cells(2, 4)) And _ IsError(Worksheets("DATA").Cells(2, 5).Value / Worksheets("DATA").Cells(2, 4).Value) Then ActiveCell = "NA" Else ActiveCell = Worksheets("DATA").Cells(2, 5).Value / Worksheets("DATA").Cells(2, 4).Value End If 

你已经翻译成VBA代码的公式是哪一个?

但是,您必须根据input数据中的内容添加error handling程序和其他内容。