Привет. Помогите, пожалуйста, с двумя задачками: 1. составить макрос или формулу для ячейки: нужно высчитать сумму цен при выборе из массива А,Б,В,Г,Д и Ж,З,И,К,Л учитывая выбранное количество от 0 до 1000, суммируются цены только попавших количеств БУКВ в указанных диапазонах в массиве 2. см. пример во вложении.
2. Есть макрос скрывающий строки с ячейками содержащие 0:
Sub Кнопка7_Щелчок()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла EndSub
можно ли написать так, чтоб макрос делал то же самое, но удалял строки, далее копировал полученный диапазон, вставка в новую книгу, а затем откатывал удаленные ячейки?
читал что с откатом обратно макроса есть сложности, но если так, можно ли сделать последовательность действий такой: копирование диапазона, вставка на новый лист, на новом листе удаление ненужные строки?
Привет. Помогите, пожалуйста, с двумя задачками: 1. составить макрос или формулу для ячейки: нужно высчитать сумму цен при выборе из массива А,Б,В,Г,Д и Ж,З,И,К,Л учитывая выбранное количество от 0 до 1000, суммируются цены только попавших количеств БУКВ в указанных диапазонах в массиве 2. см. пример во вложении.
2. Есть макрос скрывающий строки с ячейками содержащие 0:
Sub Кнопка7_Щелчок()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла EndSub
можно ли написать так, чтоб макрос делал то же самое, но удалял строки, далее копировал полученный диапазон, вставка в новую книгу, а затем откатывал удаленные ячейки?
читал что с откатом обратно макроса есть сложности, но если так, можно ли сделать последовательность действий такой: копирование диапазона, вставка на новый лист, на новом листе удаление ненужные строки?HaMMeR_Yaol
Но сейчас добавляя команду в макрос о копировании в буфер, а потом вставляю на новый лист - вставка происходит вместе со скрытыми ячейками, т.к. он копирует весь диапазон.
Ок, можно и другую тему создать)
Но сейчас добавляя команду в макрос о копировании в буфер, а потом вставляю на новый лист - вставка происходит вместе со скрытыми ячейками, т.к. он копирует весь диапазон.HaMMeR_Yaol
Nic70y, создать новую книгу, вставить в нее данные и сохранить ее как... - так чтобы не заморачиваться) Спасибо! А если заморочиться, то выбор открытой книги (может быть под любым названием), создание в ней нового листа и вставить туда данные...
Nic70y, создать новую книгу, вставить в нее данные и сохранить ее как... - так чтобы не заморачиваться) Спасибо! А если заморочиться, то выбор открытой книги (может быть под любым названием), создание в ней нового листа и вставить туда данные...HaMMeR_Yaol
Sub u_700()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла
Workbooks.Add
ThisWorkbook.ActiveSheet.Range("B35:B55").SpecialCells(xlCellTypeVisible).Copy Range("a1")
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy.mm.dd") & ".xlsx" EndSub
примерно так
Sub u_700()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла
Workbooks.Add
ThisWorkbook.ActiveSheet.Range("B35:B55").SpecialCells(xlCellTypeVisible).Copy Range("a1")
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy.mm.dd") & ".xlsx" EndSub
Остался только первый вопрос: 1. составить макрос или формулу для ячейки: нужно высчитать сумму цен при выборе из массива А,Б,В,Г,Д и Ж,З,И,К,Л учитывая выбранное количество от 0 до 1000, суммируются цены только попавших количеств БУКВ в указанных диапазонах в массиве 2. см. пример во вложении.
Nic70y, спасибо большое! С меня кофе
Остался только первый вопрос: 1. составить макрос или формулу для ячейки: нужно высчитать сумму цен при выборе из массива А,Б,В,Г,Д и Ж,З,И,К,Л учитывая выбранное количество от 0 до 1000, суммируются цены только попавших количеств БУКВ в указанных диапазонах в массиве 2. см. пример во вложении.HaMMeR_Yaol
Nic70y, подскажите, пожалуйста, такой момент, если я хочу защитить лист, какие корректировки в коде нужно внести? Сейчас при запуске выдает ошибку 1004.
Nic70y, подскажите, пожалуйста, такой момент, если я хочу защитить лист, какие корректировки в коде нужно внести? Сейчас при запуске выдает ошибку 1004.HaMMeR_Yaol
Sub u_700()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса
ActiveSheet.Unprotect 'снимаем защиту Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла
Workbooks.Add
ThisWorkbook.ActiveSheet.Range("B35:B55").SpecialCells(xlCellTypeVisible).Copy Range("a1")
ThisWorkbook.ActiveSheet.Protect 'ставим защиту
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy.mm.dd") & ".xlsx" EndSub
Sub u_700()
Application.ScreenUpdating = False'Отключаем обновление экрана во время выполнения макроса
ActiveSheet.Unprotect 'снимаем защиту Dim i& 'Объявляем переменную For i = 35To55'Указываем диапазон цикла, в данном случае по номерам строк If Range("B" & i).Value = "0"Then'Проверяем, пустые ли ячейки, соответствующие указанному выше диапазону, в интересующем столбце ("B")
Rows(i).EntireRow.Hidden = True'Скрываем строки, если эти ячейки пустые Else: Rows(i).EntireRow.Hidden = False'Отображаем строки, если ячейки заполнены EndIf'Закрываем конструкцию проверки указанных условий Next'Запускаем описанную выше процедуру для каждого значения переменной из указанного диапазона цикла
Workbooks.Add
ThisWorkbook.ActiveSheet.Range("B35:B55").SpecialCells(xlCellTypeVisible).Copy Range("a1")
ThisWorkbook.ActiveSheet.Protect 'ставим защиту
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy.mm.dd") & ".xlsx" EndSub