2015-12-15 2 views
0

В настоящее время у меня есть большой файл Excel, в котором данные не совпадают с соответствующими заголовками.Переместить целую строку на основе столбца A в смещение (-1,4)

Чтобы исправить это, мне нужно вырезать и вставлять все строки, где столбец «A» содержит «Запланировано» по одной строке и четырем столбцам справа. У меня есть несколько тысяч строк, которые нужно переместить (с VBA). Я работал над сборкой некоторого кода, но безрезультатно (я имел ограниченное знание VBA).

Ниже приведен снимок данных, с которыми я работаю. Мне нужно, чтобы желтый ряд был перемещен в красную зону. Зеленая строка сверху - пример того, как она выглядит после внесения изменений вручную. Надеюсь, этот код будет прокручивать весь лист, и я получаю данные, соответствующие их уважительным заголовкам.

(строка желтых данных, который должен быть перемещен в 60 столбцов в ширине, кстати, картина показывает только небольшой снимок листа)

enter image description here

+1

Похоже, у вас была линия в ваших данных импорта. Вы исправляете фид данных в будущем? – Jeeped

+0

... если нет, вам не нужен VBA для этого «однажды выключен». – pnuts

+1

Если вы действительно работали над созданием кода ... », то я предлагаю вам опубликовать какой-либо или весь код (работающий или нет), чтобы мы могли оценить любые оставшиеся без ответа вопросы. – Jeeped

ответ

0

Быстрого & грязное, непроверенное решения. Попробуй.

Dim cel as range 
For each cel in Range("A1:A" & Range("A1").end(xldown).row 
    if cel.value = "Planned:" then 
     cel.resize(1,60).cut 
     cel.offset(-1,4).pastespecial xlpasteall 
    end if 
next cel 
0

Вы можете попробовать этот метод (без VBA)

  1. выберите регион назначения (красная область)
  2. ударил Ctrl+g затем нажмите кнопку Special
  3. выбрать Blank, нажмите Ok

    enter image description here

  4. тип в ссылочной формуле (например, в E3 формула будет =A4) и ударила Ctrl+Enter заполнить все

  5. копии вставить весь красный столбец в качестве значения (т.е. удалить формулу)
  6. фильтра столбец A для значения Planned: и удалять строки.

Я знаю, что это имеет недостаток, на шаге 6, если ваши данные очень большие, Excel может не удалить отфильтрованные строки правильно

0

Эту короткую процедура должна заботиться о аберрантных данных импорта при переключении теперь - пустые «запланированные» линии.

Sub fix_planned() 
    Dim rw As Long 
    With Worksheets("Sheet1") 
     For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 
      If LCase(Left(.Cells(rw, 1).Value2, 8)) = "planned:" Then 
       .Range(.Cells(rw, 1), .Cells(rw, Columns.Count).End(xlToLeft)).Copy _ 
        Destination:=.Cells(rw, 1).Offset(-1, 4) 
       .Rows(rw).EntireRow.Delete 
      End If 
     Next rw 
    End With 
End Sub 

Предлагаем Вам устранить источник данных, так что вам не придется повторно восстановить данные 'после-фактум.

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