Как использовать VBA для хранения формулы, но только вставлять значения

#excel #vba #excel-formula

#excel #vba #excel-формула

Вопрос:

Пытаюсь выяснить, как использовать VBA для автоматизации моей книги

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

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

Комментарии:

1. Привет, добро пожаловать в StackOverflow. Можете ли вы рассказать нам, что вы пробовали до сих пор? Вообще говоря, вы можете использовать функции рабочего листа в VBA. Проверьте эту ссылку.

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

3. Вы спрашивали босса, почему «слишком много листов»? Использование VBA для оценки функций рабочего листа и заполнения ячеек всегда будет медленнее, чем вызов функций непосредственно на листе. Также кошмар обслуживания — для изменения формул в коде требуется разработчик VBA, а не конечный пользователь.

4. @MarkFitzgerald Эй, братан, ты знаешь, как выполнить ВПР в vba, ссылаясь на другую книгу. я попробовал этот диапазон («E2») = application. WorksheetFunction. IfError(приложение. WorksheetFunction. VLookup (диапазон («A2»),»https://-/[-.xlsx]—‘!диапазон («A: BO»), 2, FALSE),»») но не уверен, почему это не работает, продолжайте выдавать мне синтаксическую ошибку

5. Открыта ли у вас другая книга при использовании кода для ввода формулы?

Ответ №1:

Ниже приведены некоторые идеи:

 Option Explicit

Sub te()

    With ThisWorkbook.Worksheets("Sheet1")

        'Method 1 - Example how to get the average of Range("A1:A10") and paste it on .Range("C1")
        .Range("C1").Value = Application.WorksheetFunction.Average(.Range("A1:A10"))

        'Method 2 - Copy  the value from .Range("C1") which includes formula calculation and paste to .Range("D1") as value
        .Range("C1").Copy
        .Range("D1").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False

    End With

End Sub
  

Комментарии:

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

2. Сейчас я использую этот способ

3. @LimYiLong вы можете выполнить вычисление в соответствии с методом 2.

4. но мне нужен весь лист без формулы

5. @LimYiLong как я упоминал в своем ответе, я предоставляю некоторые идеи. Изучите их и измените в соответствии с вашими потребностями.