Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подготовка таблицы с нарастающим итогом для ввода данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подготовка таблицы с нарастающим итогом для ввода данных (Макросы/Sub)
Подготовка таблицы с нарастающим итогом для ввода данных
_Shurik_ Дата: Понедельник, 17.03.2014, 15:29 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Помогите, пожалуйста, с макросом. Нужна основа, сам скорректирую под свою таблицу.
В столбцы C и E ежедневно вносятся данные по поставкам и платежам, которые суммируются в столбцах B и D (данные столбцы с нарастающим итогом). Ежедневно есть необходимость обнулять столбцы C и E, при этом в столбцах с нарастающим итогом необходимо сформировать формулу с уже имеющимся значением (как в примере). Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках. Я привел пример таблицы. Сама таблица большая и могут добавляться строчки.
Есть такой макрос:
[vba]
Код

Sub Подготовка_таблицы()

     Range("B5:B7").Select
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B9:B11").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B14:B16").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B18:B20").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
          
     Range("C5:C7").Select
     Application.CutCopyMode = False
     Selection.ClearContents
     Range("C9:C11").Select
     Selection.ClearContents
     Range("C14:C16").Select
     Selection.ClearContents
     Range("C18:C20").Select
     Selection.ClearContents
      
     Range("D5:D7").Select
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D9:D11").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D14:D16").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D18:D20").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
          
     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]
но это не совсем то, поскольку не восстанавливает формулы с нарастающим итогом и при добавлении строчки в какую-либо область перестает правильно работать. К тому же он довольно большой (я знаю, что можно сделать его через цикл, будет намного короче).
Буду благодарен за помощь.
К сообщению приложен файл: __.xls (40.5 Kb)
 
Ответить
СообщениеДобрый день!
Помогите, пожалуйста, с макросом. Нужна основа, сам скорректирую под свою таблицу.
В столбцы C и E ежедневно вносятся данные по поставкам и платежам, которые суммируются в столбцах B и D (данные столбцы с нарастающим итогом). Ежедневно есть необходимость обнулять столбцы C и E, при этом в столбцах с нарастающим итогом необходимо сформировать формулу с уже имеющимся значением (как в примере). Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках. Я привел пример таблицы. Сама таблица большая и могут добавляться строчки.
Есть такой макрос:
[vba]
Код

Sub Подготовка_таблицы()

     Range("B5:B7").Select
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B9:B11").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B14:B16").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("B18:B20").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
          
     Range("C5:C7").Select
     Application.CutCopyMode = False
     Selection.ClearContents
     Range("C9:C11").Select
     Selection.ClearContents
     Range("C14:C16").Select
     Selection.ClearContents
     Range("C18:C20").Select
     Selection.ClearContents
      
     Range("D5:D7").Select
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D9:D11").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D14:D16").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
     Range("D18:D20").Select
     Application.CutCopyMode = False
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
         :=False, Transpose:=False
          
     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_
Дата добавления - 17.03.2014 в 15:29
KuklP Дата: Понедельник, 17.03.2014, 15:57 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Sub www()
     Intersect(ActiveSheet.UsedRange, ActiveSheet.[C:c,E:e]).SpecialCells(2, 1).ClearContents
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Sub www()
     Intersect(ActiveSheet.UsedRange, ActiveSheet.[C:c,E:e]).SpecialCells(2, 1).ClearContents
End Sub
[/vba]

Автор - KuklP
Дата добавления - 17.03.2014 в 15:57
_Shurik_ Дата: Вторник, 18.03.2014, 10:12 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Данный макрос удаляет только константы в указанных столбцах, при этом в колонке с нарастающим итогом остаются старые данные. К тому же, если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений), то данная ячейка не очищается.
 
Ответить
СообщениеДанный макрос удаляет только константы в указанных столбцах, при этом в колонке с нарастающим итогом остаются старые данные. К тому же, если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений), то данная ячейка не очищается.

Автор - _Shurik_
Дата добавления - 18.03.2014 в 10:12
KuklP Дата: Вторник, 18.03.2014, 10:34 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
А по какому признаку программа должна определить, что очищать, а что нет? Эта очищает значения, формулы не трогает. И еще вопрос: зачем там вообще формулы, если все равно используется макрос?
[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]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеА по какому признаку программа должна определить, что очищать, а что нет? Эта очищает значения, формулы не трогает. И еще вопрос: зачем там вообще формулы, если все равно используется макрос?
[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]

Автор - KuklP
Дата добавления - 18.03.2014 в 10:34
_Shurik_ Дата: Вторник, 18.03.2014, 11:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я поэтому и обратился за помощью, что у самого не получается. Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку. Как я писал ранее, сама таблица большая, много групп и много итогов и ежедневно ее приходится очищать (за прошедшие сутки) и в течении дня вносить новые данные. При этом колонка с нарастающим итогом должна отражать сумму за прошедший период (например с начала месяца) плюс сумму за текущие сутки. Вот тут и нужна формула в колонках B и D ("значение" плюс соседняя ячейка в колонке "C" или "E" соответственно).
 
Ответить
СообщениеЯ поэтому и обратился за помощью, что у самого не получается. Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку. Как я писал ранее, сама таблица большая, много групп и много итогов и ежедневно ее приходится очищать (за прошедшие сутки) и в течении дня вносить новые данные. При этом колонка с нарастающим итогом должна отражать сумму за прошедший период (например с начала месяца) плюс сумму за текущие сутки. Вот тут и нужна формула в колонках B и D ("значение" плюс соседняя ячейка в колонке "C" или "E" соответственно).

Автор - _Shurik_
Дата добавления - 18.03.2014 в 11:12
KuklP Дата: Вторник, 18.03.2014, 11:18 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Чего проще - не вводите формулы туда, где должны быть константы и программа из прошлого поста все обработает. Это ведь гораздо проще, чем городить допстолбцы, да вносить туда еще какие-то данные.
P.S. Вообще, решайте сами. Я чем мог, помог.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЧего проще - не вводите формулы туда, где должны быть константы и программа из прошлого поста все обработает. Это ведь гораздо проще, чем городить допстолбцы, да вносить туда еще какие-то данные.
P.S. Вообще, решайте сами. Я чем мог, помог.

Автор - KuklP
Дата добавления - 18.03.2014 в 11:18
_Shurik_ Дата: Вторник, 18.03.2014, 14:34 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - _Shurik_
Дата добавления - 18.03.2014 в 14:34
KuklP Дата: Вторник, 18.03.2014, 14:58 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Если Вы сами не можете определить:
по какому признаку программа должна определить, что очищать, а что нет
то чем же Вам можно помочь?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЕсли Вы сами не можете определить:
по какому признаку программа должна определить, что очищать, а что нет
то чем же Вам можно помочь?

Автор - KuklP
Дата добавления - 18.03.2014 в 14:58
_Shurik_ Дата: Вторник, 18.03.2014, 15:48 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я же написал в первом сообщении:
Цитата
Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках.

Т.е. необходимо почистить и восстановить формулы во всех строчках исключая итоговые строчки. Проблема в том, что в столбце A нет пустых ячеек и там чередуются контрагенты и итоги по ним, поэтому я и предложил как вариант добавить дополнительный столбец.
Цитата
Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку.


В примере я окрасил желтым цветом те ячейки к которым необходимо применить макрос и ниже - результат, который должен получиться
К сообщению приложен файл: 1933355.xls (39.5 Kb)
 
Ответить
СообщениеЯ же написал в первом сообщении:
Цитата
Необходимо создать макрос, который сможет очистить столбцы C и E и восстановить формулы в столбцах B и D, не меняя формул в итоговых строках.

Т.е. необходимо почистить и восстановить формулы во всех строчках исключая итоговые строчки. Проблема в том, что в столбце A нет пустых ячеек и там чередуются контрагенты и итоги по ним, поэтому я и предложил как вариант добавить дополнительный столбец.
Цитата
Была мысль присвоить каждой строчке, где требуется очистка, какое-нибудь значение (например 1) (в крайнем случае добавить вспомогательную колонку) и уже на основании проверки - присвоена ли этой строке единица или нет, производить очистку.


В примере я окрасил желтым цветом те ячейки к которым необходимо применить макрос и ниже - результат, который должен получиться

Автор - _Shurik_
Дата добавления - 18.03.2014 в 15:48
KuklP Дата: Вторник, 18.03.2014, 16:01 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Действительно? А еще Вы писали:
если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений)
на что я и спросил:
по какому признаку программа должна определить, что очищать
Какие из формул итоговые, какие не итоговые, одному Вам известно. Мне - нет. Для меня то, что в первой цитате - тоже итоговая формула. По большому счету они все итоговые. Отсюда вторая цитата. Но мы толчем воду в ступе, а ответа
Цитата
по какому признаку
все нет. Мне уже не интересно. Удачи!


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеДействительно? А еще Вы писали:
если в какой нибудь ячейке в колонках C и E ввести формулу (допустим необходимо сложить несколько значений)
на что я и спросил:
по какому признаку программа должна определить, что очищать
Какие из формул итоговые, какие не итоговые, одному Вам известно. Мне - нет. Для меня то, что в первой цитате - тоже итоговая формула. По большому счету они все итоговые. Отсюда вторая цитата. Но мы толчем воду в ступе, а ответа
Цитата
по какому признаку
все нет. Мне уже не интересно. Удачи!

Автор - KuklP
Дата добавления - 18.03.2014 в 16:01
_Shurik_ Дата: Вторник, 18.03.2014, 16:36 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Извиняюсь если я что-то непонятно описал.
Насчет ввода формулы имелся ввиду ввод нескольких значений (сумма данных значений) в течении рабочего дня. Очистка таблицы необходима утром следующего дня.
Для отбора по признаку как вариант я предложил добавить столбец с каким-нибудь значением (например "1" - на тех строках где необходимо применить макрос). Тогда мне нужен макрос который будет выполнятся при условии что в данной строке есть единица. Я добавил столбец F с единицами, т.е нужна проверка: если есть 1 - ячейки в данной строчке очищаются, если нет - соответственно нет.
Во всяком случае спасибо за помощь!
К сообщению приложен файл: 4935298.xls (40.5 Kb)
 
Ответить
СообщениеИзвиняюсь если я что-то непонятно описал.
Насчет ввода формулы имелся ввиду ввод нескольких значений (сумма данных значений) в течении рабочего дня. Очистка таблицы необходима утром следующего дня.
Для отбора по признаку как вариант я предложил добавить столбец с каким-нибудь значением (например "1" - на тех строках где необходимо применить макрос). Тогда мне нужен макрос который будет выполнятся при условии что в данной строке есть единица. Я добавил столбец F с единицами, т.е нужна проверка: если есть 1 - ячейки в данной строчке очищаются, если нет - соответственно нет.
Во всяком случае спасибо за помощь!

Автор - _Shurik_
Дата добавления - 18.03.2014 в 16:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подготовка таблицы с нарастающим итогом для ввода данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!