Я очень новичок в VBA, и я ищу помощь в решении следующей проблемы. Мне нужно умножить диапазон на один номер. Все ячейки в этом диапазоне должны быть умножены на это число.Excel VBA Как умножить диапазон на одно число
Спасибо!
Я очень новичок в VBA, и я ищу помощь в решении следующей проблемы. Мне нужно умножить диапазон на один номер. Все ячейки в этом диапазоне должны быть умножены на это число.Excel VBA Как умножить диапазон на одно число
Спасибо!
Как я уже сейчас комментирую.
1.Введите формулы в клетках (например, G1)
2.Press Введите ключ и перетащите формулу
Keong уже показал вам один метод, но, к сожалению, этот метод требует, чтобы сделать расчет в другой ячейке/диапазоне. Если это то, что вы хотите, то перейдите к ответу конга, но если вы хотите сделать расчет в том же диапазоне, продолжайте читать ниже.
Вот еще один метод, который не использует формулы или VBA.
Скажем, диапазон A1:A10
, и вы хотите, чтобы умножить весь диапазон от 5
5
в любую пустую ячейку. Вы можете удалить это позже.A1:A10
Paste Special | Values - Multiply
, как показано ниже, и вы сделали.Перед
После
Followup от комментариев
Если вы не хотите использовать временную ячейку для записи 5, вы можете напрямую установить 5
в буфер обмена и использовать ее так.
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim MyData As New DataObject
Dim rng As Range
Set ws = Sheet1
Set rng = ws.Range("A1:A5")
'~~> Put the number 5 in clipboard
MyData.SetText 5
MyData.PutInClipboard
'~~> Get the data from clipboard
MyData.GetFromClipboard
rng.Formula = Application.Evaluate("=" & _
rng.Address & _
"*" & _
Val(MyData.GetText))
End Sub
Как я уже говорил, вам не нужно VBA для этого, но если вы все же хотите использовать VBA, то вы можете использовать это вместо того, чтобы копировать данные в буфер обмена.
rng.Formula = Application.Evaluate("=" & rng.Address & "*" & MYNUMBER)
MYNUMBER
Где это переменная, которая имеет номер, который вы хотите, чтобы умножить диапазон с.
Эй, Сид, можете ли вы придумать способ сделать это в VBA без использования ячейки в качестве исходного значения ? То, что я не знаю, как сделать, это поместить что-то в буфер обмена Office. И не похоже, что вы можете PasteSpecial из буфера обмена Windows. –
@DougGlancy: см. Ответ i_saw_drones [Здесь] (http://stackoverflow.com/questions/10336805/vb-excel-pastespecial-requiring-clipboard-content). Поскольку данные хранятся как текст, 'Paste Special | Значения - Multiply' недоступны. Однако 'PasteSpecial Format: =" Text "' доступен, который не поддерживает 'Multiply'. Я всегда могу создать новый скрытый лист и набрать номер там, а затем скопировать его? Как только умножение будет выполнено, всегда можно удалить лист. –
Сиддхарт, если скрытый лист или какой-то такой способ. Но если дело доходит до этого, я думаю, что просто перейду через массив. Просто задавался вопросом, есть ли способ только в VBA. Приятно разговаривать с тобой! –
Это можно сделать без использования vba, просто введите формулу в одной ячейке и перетащите формулу из диапазона –