2012-04-04 2 views
3

Я создаю сложный лист распространения, где я могу отслеживать звонки через нашу сеть различным клиентам в соответствии с каждой неделей. У меня есть два листа: «raw_data» и «Sheet1».complex excel macro

Я копирую данные с нашего сервера в «Sheet1» в вертикальную компоновку и запускаю макрос, который удаляет ненужные строки данных.

В «сырых данных» объемы вызовов затем должны сортироваться в соответствии с именем клиента в горизонтальной компоновке. То, что я хочу на этом листе, - это хотя бы одна кнопка с назначенным макросом, который будет искать через столбец А для следующей свободной ячейки, вставить новую строку, добавить следующую дату в последовательности (19/03/2012, 26/03/2012, ...) и, наконец, скопируйте данные из «Sheet1» и вставьте значения под соответствующими заголовками столбцов (тогда я хочу удалить содержимое «Sheet1», но сохраните значения в «raw_data»).

Я знаю, VBA, чтобы вставить новую строку в определенном месте, но не в конце длинного списка Вот код, у меня есть:.

Sub Insertrow() 
    Rows("33:33").Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub 

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

Спасибо!

Марк

UPDATE

Я не мог добавить код на комментарий в правильном формате. Так что здесь идет снова ...

Sub Insertrow() 
     'Selects next empty cell in column A 
     ActiveWindow.ScrollRow = 2 
     Range("A2").Select 
     Selection.End(xlDown).Offset(1, 0).Select 
     'Inputs the next date 
     Dim n As Long, k As Long 
     Application.ScreenUpdating = False 
     Rng = 1 
     Range(ActiveCell, ActiveCell.Offset(Val(Rng) - 1, 0)).EntireRow.Insert 
     k = ActiveCell.Offset(-1, 0).Row 
     'copies the formula 1 cell from the left (Column A) to the row below 
     n = Cells(k, 1).End(xlToLeft).Column 
     Range(Cells(k, 1), Cells(k + Val(Rng), n)).FillDown 
End Sub 

То, что я хочу сделать сейчас, это поиск через колонку на Лист1 для конкретной строки текста (заголовок из raw_data) скопировать значение из этого ряда, который находится под дата, которая была сгенерирована из кода (см. выше). Вероятно, я мог бы использовать код, аналогичный приведенному выше, или вложенную инструкцию if, но значения из Листа будут удаляться еженедельно. Возможно ли это, или я просто мечтаю об этом в моей голове?

+0

Попробуйте End (XLdown), чтобы добраться до следующей пустой строке. – Dan

ответ

2

Отметьте, если данные не в табличном формате (то есть это не listobject, тогда вам не нужно вставлять строку), которую вы можете просто записать в последнюю строку. Для записи данных в последнюю строку, вы можете использовать что-то вроде этого

Sub Sample() 
    Dim ws As Worksheet 
    Dim wslRow As Long 

    Set ws = Sheets("Sheet1") 

    wslRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row + 1 

    ws.Range.Range("A" & wslRow).Value = "Blah Blah" 
End Sub 

Вы можете при необходимости сортировать данные по колонку даты.

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

Runtime error '91' on macro execution

НТН

Sid

+0

Марк, это действительно трудно понять. Если вы хотите, вы можете отредактировать свой вопрос, а затем опубликовать код там :) –