在Workbook1中,我在工作表“New Table1”
中的Cell AG9中有以下公式 =COUNTIF('New Table2'!B:B;"D")
应该计算“New Table2”B栏中的所有D'。 使用VBA我想将整个工作表“New Table1”复制到另一个工作簿(Workbook2),但是当我这样做时,Workbook2中复制的公式变为
=COUNTIF('C:\Users\a.hopf\Desktop\[Workbook1.xlsx]New Table2 '!B:B;"D")
如何阻止公式引用原始工作簿? Workbook2中的公式还应该引用Workbook2中的New Table2。我尝试使用$来创建绝对引用,但=COUNTIF($'New Table2'!$B:$B;"D")
不起作用。
我知道我可以使用VBA将公式编写到Workbook2中,但我更愿意将它与Workbook1中的工作表一起复制。
答案 0 :(得分:1)
尝试复制工作表,如下所示:
Option Explicit
Sub copyFormulasWithoutExternalLinks()
Dim r1 As Range, r2 As Range
Set r1 = Workbooks("Book1.xlsm").Worksheets(1).UsedRange
Set r2 = Workbooks("Book2.xlsm").Worksheets(1).UsedRange
'Range("G1") in r1: =COUNTIF('New Table2'!B:B/"D")
r1.Copy r2 'Range("G1") in r2: =COUNTIF('[Book1.xlsm]New Table2'!B:B/"D")
'-------------------------------------------------------------------------------------
Set r2 = Workbooks("Book2.xlsm").Sheets(1).UsedRange 'reset used range in Book2
Application.DisplayAlerts = False
r2.Formula = r1.Formula 'Range("G1") in r2: =COUNTIF('New Table2'!B:B/"D")
Application.DisplayAlerts = True
'(all formulas in Book2 will be invalid if 'New Table2' sheet is missing)
End Sub
答案 1 :(得分:0)
诀窍是使用INDIRECT()。例如:
=COUNTIF(INDIRECT("'New Table2'!B:B");"D")