2014-02-20 5 views
0

У меня есть таблица с 4000 записями, которая продолжает обновлять новые данные. Заголовки столбцов - это имя сотрудника, проект, активность, 06/29/2013, 06/30/2013 ... и т. Д. Это отдельные даты, начинающиеся с октября прошлого года до этой недели, и каждый из этих столбцов содержит числовые значения. Я пытаюсь изменить эту неделю. Поэтому, если воскресенье считается седьмым днем ​​недели, я хочу вычесть значения с воскресенья этой недели с воскресеньем в прошлую неделю. И я бы хотел, чтобы он продолжал делать это для остальных столбцов, так как даты будут продолжать обновляться, поэтому он будет облагать налогом, чтобы сделать это вручную.Вставьте новый столбец после каждых 7 столбцов с формулой

A rough sketch of what I want. Hope it's understandable..

FYI Я использую Excel 2013.

Я знаю, как выполнять основные операции, но это один находится за пределами моего понимания, так что любая помощь будет высоко ценится!

Sub insert_column_after_interval_7() 
For colx = 7 To 200 Step 8 
Columns(colx).Insert Shift:=xlToRight 
Next 
End Sub 

Я определил диапазон как 200, но данные могут быть позже. Итак, как мне изменить его, не указывая какой-либо определенный диапазон?

+1

, чтобы сделать это без Код VBA (который используется макросами в фоновом режиме), вам нужно будет сделать это вручную, так как нет функции excel для циклизации (выполнение функции выполняется более одного раза), чтобы вы могли записать макрос, в который вы вставляете столбец, и написание формулы, но вам придется запускать ее, однако, много раз за каждую неделю. Чтобы сделать это в VBA, вы должны использовать цикл, начиная с первого воскресенья, вставляя столбец, вставляя функцию, затем перемещая 7 ячеек вправо и повторяя. если вы вообще не знаете VBA, вам нужно нанять кого-то, кто делает, поскольку никто не собирается кодировать для вас целый макрос. – user1759942

+1

, сказав все это, если вы знаете VBA, дайте ему шанс, и если вы застряли, опубликуйте код, который вы использовали, и что произошло, когда вы это пробовали, и мы поможем вам в этом. – user1759942

+0

Спасибо за ваш ответ. Не знаю много о VBA. Я действительно нашел другой путь вокруг него. Но у меня есть сомнения по поводу ввода новых столбцов после каждого 7-го интервала. –

ответ

1

вы могли бы попробовать что-то вдоль линий этого:

Sub insert_column_after_interval_7() 

dim iLastCol as integer 

    iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column ' same as CTRL+RIGHT ARROW 

    For colx = 7 To iLastCol Step 8 
     Columns(colx).Insert Shift:=xlToRight 
    Next 

End Sub 

конечно, как вы, вероятно, добавление более 8 столбцов, вы могли бы быть лучше с DO WHILE петли

+1

Вот как вы обрабатываете все строки/столбцы, обнаруживая последнюю строку/столбец и используя это вместо статического числа, такого как 200. Хотя я нахожу 'Cells.find (« * », [A1],,, xlByColumns, xlPrevious) .Column' работать немного лучше при поиске последнего столбца. его можно настроить следующим образом: «Cells.find (« * », [A1],,, xlByRows, xlPrevious) .Row', чтобы найти последнюю строку. – user1759942

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