Добрый день! Помогите, пожалуйста, с макросом. Нужна основа, сам скорректирую под свою таблицу. В столбцы C и E ежедневно вносятся данные по поставкам и платежам, которые суммируются в столбцах B и D (данные столбцы с нарастающим итогом). Ежедневно есть необходимость обнулять столбцы C и E, при этом в столбцах с нарастающим итогом необходимо сформировать формулу с уже имеющимся значением (как в примере). Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках. Я привел пример таблицы. Сама таблица большая и могут добавляться строчки. Есть такой макрос: [vba]
Range("E5:E7").Select Application.CutCopyMode = False Selection.ClearContents Range("E9:E11").Select Selection.ClearContents Range("E14:E16").Select Selection.ClearContents Range("E18:E20").Select Selection.ClearContents End Sub
[/vba] но это не совсем то, поскольку не восстанавливает формулы с нарастающим итогом и при добавлении строчки в какую-либо область перестает правильно работать. К тому же он довольно большой (я знаю, что можно сделать его через цикл, будет намного короче). Буду благодарен за помощь.
Добрый день! Помогите, пожалуйста, с макросом. Нужна основа, сам скорректирую под свою таблицу. В столбцы C и E ежедневно вносятся данные по поставкам и платежам, которые суммируются в столбцах B и D (данные столбцы с нарастающим итогом). Ежедневно есть необходимость обнулять столбцы C и E, при этом в столбцах с нарастающим итогом необходимо сформировать формулу с уже имеющимся значением (как в примере). Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках. Я привел пример таблицы. Сама таблица большая и могут добавляться строчки. Есть такой макрос: [vba]
Range("E5:E7").Select Application.CutCopyMode = False Selection.ClearContents Range("E9:E11").Select Selection.ClearContents Range("E14:E16").Select Selection.ClearContents Range("E18:E20").Select Selection.ClearContents End Sub
[/vba] но это не совсем то, поскольку не восстанавливает формулы с нарастающим итогом и при добавлении строчки в какую-либо область перестает правильно работать. К тому же он довольно большой (я знаю, что можно сделать его через цикл, будет намного короче). Буду благодарен за помощь._Shurik_
Данный макрос удаляет только константы в указанных столбцах, при этом в колонке с нарастающим итогом остаются старые данные. К тому же, если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений), то данная ячейка не очищается.
Данный макрос удаляет только константы в указанных столбцах, при этом в колонке с нарастающим итогом остаются старые данные. К тому же, если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений), то данная ячейка не очищается._Shurik_
А по какому признаку программа должна определить, что очищать, а что нет? Эта очищает значения, формулы не трогает. И еще вопрос: зачем там вообще формулы, если все равно используется макрос? [vba]
Код
Sub www() For Each c In Intersect(ActiveSheet.UsedRange, ActiveSheet.[C:c,E:e]).SpecialCells(2, 1) c(1, 0).Formula = c(1, 0).Formula & "+" & c.Value c.ClearContents Next End Sub
[/vba]
А по какому признаку программа должна определить, что очищать, а что нет? Эта очищает значения, формулы не трогает. И еще вопрос: зачем там вообще формулы, если все равно используется макрос? [vba]
Код
Sub www() For Each c In Intersect(ActiveSheet.UsedRange, ActiveSheet.[C:c,E:e]).SpecialCells(2, 1) c(1, 0).Formula = c(1, 0).Formula & "+" & c.Value c.ClearContents Next End Sub
Я поэтому и обратился за помощью, что у самого не получается. Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку. Как я писал ранее, сама таблица большая, много групп и много итогов и ежедневно ее приходится очищать (за прошедшие сутки) и в течении дня вносить новые данные. При этом колонка с нарастающим итогом должна отражать сумму за прошедший период (например с начала месяца) плюс сумму за текущие сутки. Вот тут и нужна формула в колонках B и D ("значение" плюс соседняя ячейка в колонке "C" или "E" соответственно).
Я поэтому и обратился за помощью, что у самого не получается. Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку. Как я писал ранее, сама таблица большая, много групп и много итогов и ежедневно ее приходится очищать (за прошедшие сутки) и в течении дня вносить новые данные. При этом колонка с нарастающим итогом должна отражать сумму за прошедший период (например с начала месяца) плюс сумму за текущие сутки. Вот тут и нужна формула в колонках B и D ("значение" плюс соседняя ячейка в колонке "C" или "E" соответственно)._Shurik_
Чего проще - не вводите формулы туда, где должны быть константы и программа из прошлого поста все обработает. Это ведь гораздо проще, чем городить допстолбцы, да вносить туда еще какие-то данные. P.S. Вообще, решайте сами. Я чем мог, помог.
Чего проще - не вводите формулы туда, где должны быть константы и программа из прошлого поста все обработает. Это ведь гораздо проще, чем городить допстолбцы, да вносить туда еще какие-то данные. P.S. Вообще, решайте сами. Я чем мог, помог.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Спасибо за помощь, мне это пригодится, я воспользуюсь данным методом где-нибудь. Но все-таки хотел-бы получить ответ именно на поставленную задачу. Моя таблица установленного образца и мне просто необходимо найти выход из положения. Может кто-нибудь еще поможет.
Спасибо за помощь, мне это пригодится, я воспользуюсь данным методом где-нибудь. Но все-таки хотел-бы получить ответ именно на поставленную задачу. Моя таблица установленного образца и мне просто необходимо найти выход из положения. Может кто-нибудь еще поможет._Shurik_
Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках.
Т.е. необходимо почистить и восстановить формулы во всех строчках исключая итоговые строчки. Проблема в том, что в столбце A нет пустых ячеек и там чередуются контрагенты и итоги по ним, поэтому я и предложил как вариант добавить дополнительный столбец.
Цитата
Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку.
В примере я окрасил желтым цветом те ячейки к которым необходимо применить макрос и ниже - результат, который должен получиться
Я же написал в первом сообщении:
Цитата
Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках.
Т.е. необходимо почистить и восстановить формулы во всех строчках исключая итоговые строчки. Проблема в том, что в столбце A нет пустых ячеек и там чередуются контрагенты и итоги по ним, поэтому я и предложил как вариант добавить дополнительный столбец.
Цитата
Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку.
В примере я окрасил желтым цветом те ячейки к которым необходимо применить макрос и ниже - результат, который должен получиться_Shurik_
по какому признаку программа должна определить, что очищать
Какие из формул итоговые, какие не итоговые, одному Вам известно. Мне - нет. Для меня то, что в первой цитате - тоже итоговая формула. По большому счету они все итоговые. Отсюда вторая цитата. Но мы толчем воду в ступе, а ответа
по какому признаку программа должна определить, что очищать
Какие из формул итоговые, какие не итоговые, одному Вам известно. Мне - нет. Для меня то, что в первой цитате - тоже итоговая формула. По большому счету они все итоговые. Отсюда вторая цитата. Но мы толчем воду в ступе, а ответа
Извиняюсь если я что-то непонятно описал. Насчет ввода формулы имелся ввиду ввод нескольких значений (сумма данных значений) в течении рабочего дня. Очистка таблицы необходима утром следующего дня. Для отбора по признаку как вариант я предложил добавить столбец с каким-нибудь значением (например "1" - на тех строках где необходимо применить макрос). Тогда мне нужен макрос который будет выполнятся при условии что в данной строке есть единица. Я добавил столбец F с единицами, т.е нужна проверка: если есть 1 - ячейки в данной строчке очищаются, если нет - соответственно нет. Во всяком случае спасибо за помощь!
Извиняюсь если я что-то непонятно описал. Насчет ввода формулы имелся ввиду ввод нескольких значений (сумма данных значений) в течении рабочего дня. Очистка таблицы необходима утром следующего дня. Для отбора по признаку как вариант я предложил добавить столбец с каким-нибудь значением (например "1" - на тех строках где необходимо применить макрос). Тогда мне нужен макрос который будет выполнятся при условии что в данной строке есть единица. Я добавил столбец F с единицами, т.е нужна проверка: если есть 1 - ячейки в данной строчке очищаются, если нет - соответственно нет. Во всяком случае спасибо за помощь!_Shurik_