2015-06-22 3 views
2

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

Кто-нибудь знает, как отображать формулу, используя макрос внутри ячейки, а не результат формулы.

Я прошу об этом, потому что мне нужно вставить эту строку в существующий лист среди других данных, а затем запустить другой макрос, чтобы он обновлялся, и макрос зависит от этой формулы.

код я использую

Cells(C, 9).Formula = Application.Index(Plan2.Range("B2:D10000"), _ 
Application.Match(Plan1.Range("B" & C) & Range("F" & C), Plan2.Range("A2:A10000"), 0), 3) 

Как вы можете видеть, эта формула зависит от ряда, что его вставленным.

+1

Формула - это строка, которая выглядит примерно так: '' = Index (B2: D10000) ... "'. То, что вы делаете, - это вызов VBA для функций Excel и присвоение результата формуле ячейки, которая похожа на '' = 3 "'. – RBarryYoung

ответ

5

Ваш Formula в конечном счете сводится к тому, что возвращается Application.Index. Если возвращаемое значение не является фактической строкой формулы, тогда вы просто получите число в качестве результата, и оно будет установлено на .Formula.

Если вы хотите действительно установить формулу, вам нужно создать строку в VBA, которая представляет формулу для использования. В этом случае эта строка будет выглядеть примерно так:

Cells(C, 9).Formula = "=INDEX(Plan2!B2:D10000, MATCH(Plan1!B" & C & "..." 

, где вы соединяетесь в динамических частях. Конечный результат должен выглядеть как нормальная формула. Функции Application.XXX и Application.WorksheetFunction.XXX возвращают фактические результаты, а не части, которые могут быть объединены для создания формулы.

Смежные вопросы