2015-09-03 3 views
0

В Workbook1 я следующую формулу в ячейке AG9 в рабочем листе «Новый Table1»Копирование Excel-Формула для другой книги, без сохранения ссылок

=COUNTIF('New Table2'!B:B;"D")

Он должен сосчитать все двойки в «Нью-Table2 "Колонка B. Использование VBA Я хочу, чтобы скопировать весь рабочий лист„New Table1“в другой Workbook (Workbook2), но когда я делаю так, скопированную формулу в Workbook2 изменения в

=COUNTIF('C:\Users\a.hopf\Desktop\[Workbook1.xlsx]New Table2 '!B:B;"D")

Как я могу препятствовать тому, чтобы формула ссылалась на оригинальную книгу? Формула в Workbook2 также должна ссылаться на новую таблицу 2 в Workbook2. Я попытался использовать $, чтобы создать абсолютную ссылку, но =COUNTIF($'New Table2'!$B:$B;"D") не работает.

Я знаю, что могу написать формулу в Workbook2 с помощью VBA, но я бы предпочел скопировать ее вместе с листом из Workbook1.

+0

формула должна содержать запятую вместо запятой? Я получаю сообщение об ошибке с помощью двоеточия. – seadoggie01

+0

Вы копируете листок из открытой книги? – dendarii

ответ

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 
Смежные вопросы