#excel #vba
#excel #vba
Вопрос:
Я искал как сумасшедший, и я уверен, что это намного проще, чем я думаю, поэтому, пожалуйста, просветите меня!
Я устанавливаю формулу для некоторых ячеек в цикле, подобном этому:
ActiveSheet.Range("AM" amp; i).Formula = "=ROUND(Y" amp; i amp; "/(M" amp; i amp; " U" amp; i amp; "/12))"
И я хотел бы скопировать РЕЗУЛЬТАТ этой формулы в другую ячейку. Я попробовал это:
ActiveSheet.Range("Y" amp; i).Value = ActiveSheet.Range("AM" amp; i).Value
Но это не работает. Мне всегда было интересно, как получить результат (значение) этой формулы, а не копировать всю формулу.
Есть идея или ответ? Большое спасибо.
Комментарии:
1. Похоже, это должно сработать, вы убедились, что оно действительно рассчитало его после размещения формулы. Кроме того, две формулы будут циклическими, так что это может быть проблемой.
2. @Tom, на самом деле вам не нужно выполнять цикл, чтобы поместить формулу в диапазон ячеек. Это можно сделать в одной строке.
3. Согласен с обоими комментариями выше. Выбранный вами ответ копирования / вставки на самом деле является обходным путем
Ответ №1:
Вы можете скопировать результат в виде значения. Предположим, у меня есть ячейки A1 и A2, и я хочу получить MAX
значение в формате A3, а затем скопировать результат в формат A4:
A
1 10
2 20
3 20 <- as formula '=MAX(A1:A2)'
4 20 <- as value not formula
Sub AddMax()
Range("A3").Formula = "=MAX(A1:A2)"
End Sub
Sub CopyResult()
Range("A3").Copy
Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Комментарии:
1. (1) Если вы когда-либо используете Copy в VBA, вам следует добавить a
Application.CutCopyMode = False
, чтобы удалить выделение копирования вокруг A3. (2) Приведенный выше пример можно выполнить с помощью одной строки[a4].Value = Application.WorksheetFunction.Max([a1], [a2])
, избегая копирования2. @brettdj — Спасибо — хорошие комментарии. Я согласен с вашей точкой зрения (2), и мне было непонятно, почему это не работает для OP, поэтому я предложил копировать и вставлять в качестве альтернативы.
3. Приветствую Remant. Мои комментарии не были предназначены для критики .. они выглядят хуже, чем я думал, когда я их перечитывал. Спасибо, что восприняли это как конструктивное в моем предполагаемом порядке
4. @brettdj — Нет проблем. Я приветствую советы, и я всегда смущен на этом сайте тем, как много я не знаю, поэтому я стараюсь смотреть непредвзято.