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