Данные столбца перемещаются вправо с помощью Excel VBA - PullRequest
1 голос
/ 08 февраля 2012

Ниже приведены мои исключительные данные:

A    B       c  .... F               G

1   test    vb1     testing1        open
2   test1   vb2     testing1        close
2   test2   vb3     testing1 
4   test3   vb4     testing1

Я хочу переместить данные столбца F в столбец B и сдвинуть данные столбца B вправо, поэтому перед B будет C.

Как я могу сделать это с помощью программирования Excel VBA.

Спасибо

Chaitu

Ответы [ 2 ]

9 голосов
/ 08 февраля 2012

Попробуйте:

Option Explicit

Sub MoveColumns()

With ActiveSheet
    .Columns("F:F").Cut
    .Columns("B:B").Insert Shift:=xlToRight
    .Columns("C:C").Cut
    .Columns("E:E").Insert Shift:=xlToRight
End With
Application.CutCopyMode = False
End Sub

Чтобы использовать это:

  • , откройте редактор Visual Basic: Инструменты> Макрос> Редактор Visual Basic
  • вставьте модуль(щелкните правой кнопкой мыши VBAProject и вставьте> Модуль)
  • и вставьте приведенный выше код в этот новый модуль.

Затем можно выполнить код из Excel: Инструменты> Макрос ...> Макросы ...

[РЕДАКТИРОВАТЬ] Еще одна попытка без вставки копий

Option Explicit

Sub copyWithArray()
Dim lLastrow As Long
Dim aValues As Variant

With ActiveSheet
    lLastrow = .Cells(.Rows.Count, "AE").Row
    'store data from the column F
    aValues = .Range("F1:F" & lLastrow).Value
    '"move" data a column further
    .Range("C1:AE" & lLastrow).Value = .Range("B1:AD" & lLastrow).Value
    'copy data from column C to column B
    .Range("B1:B" & lLastrow).Value = .Range("C1:C" & lLastrow).Value
    'restore data copied from column F to column B
    .Range("B1:B" & lLastrow).Value = aValues
End With
End Sub
1 голос
/ 10 февраля 2012

так что прежде чем B станет C.

Мне пришлось много раз перечитывать его, чтобы понять, что вы пытаетесьсказать.И я, возможно, все еще не понял это правильно.:) Ты это говоришь?Пожалуйста, подтвердите.

"Таким образом, B теперь будет вместо C, когда C перемещается на 1 позицию вправо, когда вы вставляете F вместо B"

Если да, то все, что вам нужно, это простопервые две строки из кода Jmax

Sub Sample()
    Columns("F:F").Cut
    Columns("B:B").Insert Shift:=xlToRight
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...