2015-07-02 4 views
1

Я очень новичок в VBA, и я ищу помощь в решении следующей проблемы. Мне нужно умножить диапазон на один номер. Все ячейки в этом диапазоне должны быть умножены на это число.Excel VBA Как умножить диапазон на одно число

Спасибо!

+2

Это можно сделать без использования vba, просто введите формулу в одной ячейке и перетащите формулу из диапазона –

ответ

0

Как я уже сейчас комментирую.
1.Введите формулы в клетках (например, G1)
Formula
2.Press Введите ключ и перетащите формулу
enter image description here

1

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

Вот еще один метод, который не использует формулы или VBA.

Скажем, диапазон A1:A10, и вы хотите, чтобы умножить весь диапазон от 5

  1. Просто введите 5 в любую пустую ячейку. Вы можете удалить это позже.
  2. Скопируйте эту ячейку
  3. Выбор диапазона A1:A10
  4. правой кнопкой мыши на нем
  5. Нажмите на Paste Special | Values - Multiply, как показано ниже, и вы сделали.

Перед

enter image description here

После

enter image description here

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 Где это переменная, которая имеет номер, который вы хотите, чтобы умножить диапазон с.

+0

Эй, Сид, можете ли вы придумать способ сделать это в VBA без использования ячейки в качестве исходного значения ? То, что я не знаю, как сделать, это поместить что-то в буфер обмена Office. И не похоже, что вы можете PasteSpecial из буфера обмена Windows. –

+0

@DougGlancy: см. Ответ i_saw_drones [Здесь] (http://stackoverflow.com/questions/10336805/vb-excel-pastespecial-requiring-clipboard-content). Поскольку данные хранятся как текст, 'Paste Special | Значения - Multiply' недоступны. Однако 'PasteSpecial Format: =" Text "' доступен, который не поддерживает 'Multiply'. Я всегда могу создать новый скрытый лист и набрать номер там, а затем скопировать его? Как только умножение будет выполнено, всегда можно удалить лист. –

+0

Сиддхарт, если скрытый лист или какой-то такой способ. Но если дело доходит до этого, я думаю, что просто перейду через массив. Просто задавался вопросом, есть ли способ только в VBA. Приятно разговаривать с тобой! –

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