应用Excel公式与macros

感谢您花时间阅读我的查询。

将公式应用于我的一个Excel表单时遇到问题。 我目前正在使用一个macros将几张纸合并成一个。 这是相当粗糙,但它的工作。

Sub Combine() Application.DisplayAlerts = False Sheets("Combined").Delete Application.DisplayAlerts = True Dim J As Integer On Error Resume Next Sheets(1).Select Worksheets.Add Sheets(1).Name = "Combined" Sheets(2).Activate Range("A1").EntireRow.Select Selection.Copy Destination:=Sheets(1).Range("A1") For J = 3 To 6 Sheets(J).Activate Range("A1").Select Selection.CurrentRegion.Select Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) Sheets("Combined").Visible = False Next End Sub 

这是给我一个特定的页面,我需要从中绘制信息。 我将把它绑在button上以便将来访问。 我目前正在努力应用一个公式,从上述“组合”表中获取信息。 我正在使用的公式在代码开始时删除工作表时丢失了。

 =IF(ISNUMBER(SEARCH("_",Combined!A2)),LEFT(Combined!A2,(FIND("_",Combined!A2,1)-1))) 

所以我试图把它应用到一个macros。 但是,正如你所看到的那里有一个下划线,VBA对它有一个非常具体的解释。 有没有解决方法?

 Sub Place_formula() 'trying to place the formulae once again Range("F2").Formula = "=IF(ISNUMBER(SEARCH("_",Combined!A2)),LEFT(Combined!A2, (FIND("_",Combined!A2,1)-1)))" End Sub 

如果我设法做到这一点,我会很容易find一种方法将其复制到需要的地方。

您必须在VBA中将报价加倍

 Range("F2").Formula = "=IF(ISNUMBER(SEARCH(""_"",Combined!A2)),LEFT(Combined!A2,(FIND(""_"",Combined!A2,1)-1)))" 

还build议修改您的主代码,以避免select,并使用一些工作表variables,以便于参考相关工作表。

 Sub Combine() Application.DisplayAlerts = False workSheets("Combined").Delete Application.DisplayAlerts = True Dim ws1 As Worksheet, ws2 As Worksheet Dim J As Long Set ws1 = Sheets(1) Set ws2 = Worksheets.Add(before:=ws1) ws2.Name = "Combined" ws1.Range("A1").EntireRow.Copy Destination:=ws2.Range("A1") For J = 3 To 6 With workSheets(J).Range("A1").CurrentRegion .Offset(1, 0).Resize(.Rows.Count - 1).Copy Destination:=ws2.Range("A" & Rows.Count).End(xlUp)(2) End With Next ws2.visible = False End Sub