#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 как я упоминал в своем ответе, я предоставляю некоторые идеи. Изучите их и измените в соответствии с вашими потребностями.