Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Excel - Изменить Выберите столбцы по общему значению

Автор вопроса: Sharks SriОтветов: 2

У меня есть набор значений, как это.

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.

  • Какой язык программирования? Если вы имели в виду, что хотите сделать это, используя excel, то не в том месте. Попробуйте где-нибудь как суперпользователь. Ash Burlaczenko 03.03.2012
  • @Ash: я думаю, что Sharks хочет использовать VBA для этого. mechanical_meat 03.03.2012

excelexcel-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.

В приведенном ниже коде показан один из способов сделать то, что вы хотите.
Не копируйте и не вставляйте его.
Он поможет вам начать работу над собственным кодом.

Краткое объяснение:

  1. объявить некоторые переменные,
  2. используйте два цикла for для перебора небольшого диапазона ячеек,
  3. увеличить значение каждой ячейки на 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы