У меня есть набор значений, как это.
5 5 5 5 5 5
9 7 7 6 6 55
5 4 4 7 5 30
10 8 7 6 9 60
9 9 9 9 9 80
20 20 20 20 20 20
Допустим, я хочу изменить все значения на -1 или +1, как мне это сделать? Я почти новичок в этом, и любая помощь будет принята с благодарностью! Спасибо.
Эксель 2007.
Ответ 1 · рейтинг 1 · brettdj
Самый быстрый способ сделать это в обычном Excel или с помощью VBA - использовать функцию Excel Paste Special.
Ручной метод
- В пустую ячейку введите -1 (или 1 для вашего второго случая)
- Скопируйте эту ячейку
- выделить свой набор ценностей
- Изменить.... Специальная вставка.... Добавить, чтобы добавить это значение во все ячейки
Пример умножения этого метода приведен здесь из Mr Excel.
Метод VBA
Код от Zack Barresse, измененный для xl07/10, в котором используется пустая ячейка в столбец А для добавления
Option Explicit
Sub psAdd()
Dim y As Integer 'The multiplier value, user-defined
Dim x As Range 'Just a blank cell for variable
Dim z As Range 'Selection to work with
Set z = Selection
y = Application.InputBox("Enter amount to add to selection:", _
Title:="Add to selection", Default:=10, Type:=1)
Set x = Cells(Rows.Count, "A").End(xlUp).Offset(1)
If y = 0 Then Exit Sub 'Cancel button will = 0, hence cancel
If x <> "" Then
Exit Sub
Else: x.Value = y
x.Copy
z.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
Application.CutCopyMode = False 'Kill copy mode
End If
x.ClearContents 'Back to normal : )
End Sub
Ответ 2 · mechanical_meat
Прежде всего, чтобы открыть редактор VBA, попробуйте Alt+F11.
В приведенном ниже коде показан один из способов сделать то, что вы хотите.
Не копируйте и не вставляйте его.
Он поможет вам начать работу над собственным кодом.
Краткое объяснение:
- объявить некоторые переменные,
- используйте два цикла
for для перебора небольшого диапазона ячеек,
- увеличить значение каждой ячейки на 1.
После написания собственного кода вы сможете запустить его, нажав F5.
option explicit
sub increment_cell_values()
dim r as long
dim c as long
dim ws as worksheet
set ws = activesheet
for r = 1 to 6
for c = 1 to 6
ws.cells(r,c).value = ws.cells(r,c).value + 1
next c
next r
next ws
end sub