Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Удаление строк макросом, исключая последнюю строку
 
Добрый вечер!
Благодаря знаниям и умениям знатоков удалось добавлять строки макросом в таблицы, расположенные на одном листе, не смещая при этом исходные таблицы: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=111903&a..., за что еще раз всем огромное спасибо.
Теперь появилась необходимость удалять строки в каждой таблице. Не имеет значения есть в них данные или нет.
Важно, чтобы нельзя было удалить строку, если она последняя в данной таблице. Помогите, пожалуйста.
Как избежать смещения таблицы при добавлении строк макросом?
 
Добрый всем вечер!
Есть три таблицы на одном листе. В каждую есть необходимость добавлять строки. Записал макрорекодером. Если идти снизу вверх (от Таблицы 3 к Таблице 1), то никаких проблем - строки копируются и добавляются. Но если, например, добавить несколько строк в Таблицу 1, то при выполнении макроса к таблице 2, строки добавляются уже со смещением (не в Таблице 2, а выше). Понимаю, почему это происходит, но не знаю, как это обойти.
быстродействие СУММЕСЛИ, при использовании СУММЕСЛИ в диапазоне 60 т. срок на 60 столбцов пересчет происходит очень долго
 
Доброго дня!
С Днем знаний!
Поделитесь, пожалуйста, познаниями и опытом :))

Подтягиваю данные с одного листа на другой с помощью СУММЕСЛИ. Таблица очень большая: 60 тысяч + строк на 60 столбцов.
СУММЕСЛИ использую внутри макроса, написанного макрорекодером.
Запускаю макрос ---  время на выполнение уходит от 20 минут до ...
Попробовал в макрос добавить процедуру выключения/включения обновлений экрана и пересчетов в начале и в конце макроса. Значительно быстрее, но все равно долго.
Подскажите, как можно оптимизировать процесс?
Изменено: ДмСмирнов - 01.09.2018 14:20:39 (другой файл-пример)
Inputbox с выпадающим списком
 
Доброго всем дня/ночи))
Возможно ли совместить Inputbox и выпадающий список? Например: в диалоговом окне запрашиваем у пользователя "Введите город", пользователь может выбрать только предложенные варианты (по аналогии с выпадающим списком).
Сопоставление ячеек и наименований листов в файле и создание Гиперссылки, сделать ячейку Гиперссылкой на соответствующий лист
 
Добрый день!
Есть макрос, который создает новые листы в книге и присваивает им имена по некоторому правилу. В другом листе (назовем его "Реестр") в столбце, например B, присвоенные имена добавляются по мере добавления новых листов.
Другими словами: есть листы ВВА, СВА, АВС и т.д. На отдельном листе "Реестр" в столбце В в ячейках прописаны эти же самые ВВА, СВА, АВС и т.д. Возможно ли в листе реестр в столбце В сделать ВВА, СВА, АВС и т.д гиперссылками на соответствующие листы? Прописывать руками не шибко рационально, т.к. новые листы с новыми именами постоянно создаются пользователем.
возможно, несколько кривовато объяснил, поэтому файл, на всякий случай, прилагаю
Изменено: ДмСмирнов - 06.03.2018 22:54:37
Сбор данных со всех листов книги в один лист по наименованию столбцов
 
Добрый день!
Почитал форум, нашел несколько вариантов решения сбора данных всех листов открытой книги на новый лист.
Подскажите, возможно ли собрать данные со всех листов кроме листа "Заказ" частично на новый лист по наименованию столбцов: Наименование, цена, поставщик, заказ?
Столбцы на разных листах могут находится в разных местах: например в листе 1 наименование находится в столбце А, на листе 2 - в столбце В и т.д.
Пример прилагается.
Изменено: ДмСмирнов - 10.02.2018 14:20:59
При удалении/добавлении листов макрос не работает
 
Добрый день, уважаемые знатоки ! :)
Воспользовался кодом, любезно предоставленным Kuzmich - ом
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        Application.EnableEvents = False
Dim Sht As Worksheet
Dim iLastRow As Long
Dim Naimenovanie As Range
Dim FoundNaimenovanie As Range
Dim TSena As Range
    For Each Sht In Worksheets
      If Sht.Name <> "заказ" Then
        With Sht
         Set Naimenovanie = .Rows("1:2").Find("Наименование", , xlValues, xlWhole, 2)
         Set FoundNaimenovanie = .Columns(Naimenovanie.Column).Find(Target, , xlValues, xlWhole)
          If Not FoundNaimenovanie Is Nothing Then
            Set TSena = .Rows("1:2").Find("Цена", , xlValues, xlWhole)
             If Not TSena Is Nothing Then
               Target.Offset(, 4) = .Cells(FoundNaimenovanie.Row, TSena.Column)
               Target.Offset(, 1) = Sht.Name
             End If
          End If
        End With
      End If
    Next
    End If
    Application.EnableEvents = True
End Sub
Макрос ищет по всем листам книги введенное в листе "Заказ" Наименование и возвращает соответствующую ему цены и имя этого листа.
Изначально все работало нормально. Начал "причесывать" исходный файл и выяснилось:
1. При удалении строк в лист "Заказ", макрос ругается: Run-time error '91 Object variable or With block variable not set в строке
Код
Set FoundNaimenovanie = .Columns(Naimenovanie.Column).Find(Target, , xlValues, xlWhole)
после этого макрос не работает

2. После удаления и/или добавления новых листов макрос выдает такую же ошибку.
3. При вводе пустого значения макрос дает имя одного из листов (понимаю, что он ищет соответствие и находит  :), но хотелось бы этого избежать. При очистке Delитом такая же история.
4. При копировании формата введенного для поиска значения на другие значения изменяется и "наименование" и "цена". привязанные к ним.

Скажу честно, мои познания в макросах близки к нулевым, поэтому не судите строго, если изложил коряво.
Использование в функции СУММЕСЛИ динамического диапазона
 
Добрый день!
Задача следующая: есть много прайс-листов различных поставщиков, каждый на отдельном листе. Нас интересуют столбцы "Наименование" и "Цена". В каждом прайсе эти столбцы занимают разное положение (т. е. у Поставщика 1 "Наименование" находится в столбце B, а "Цена" в столбце С, у Поставщика 2 - "Наименование" находится в столбце А, а "Цена" в столбце G и т.д.) Более того при обновлении данных (копировании нового прайса) на этих листах положения "Наименования" и "Цены" могут изменится (т. е. у Поставщика 1 "Наименование" будет в столбце C, а "Цена" в столбце D и т.д.)
Возможно ли в данном случае использовать функцию СУММЕСЛИ? Нужно на отдельном листе в соответствие каждому наименованию (все наименования уникальные) вывести цену. Другими словами сформировать сводный прайс-лист.
Изменено: ДмСмирнов - 01.02.2018 17:49:23
Массив с неуникальными связками товар1 - товар2
 
Доброго утра! С наступающими всех!

есть таблица:
товар А  -  Арт.1,Арт.2,Арт.3,Арт.4,Арт.5
товар В -   Арт.1,Арт.3,Арт.2,Арт.5,Арт.4
товар С -   Арт.1,Арт.4,Арт.3,Арт.2,Арт.5
и т.д.

Т.е. в состав каждого товара входит определенный состав артикулов.
Можно ли сделать обратное сопоставление Артикул - Товар?
Нужно понять, в состав каких товаров входит каждый артикул.

Начинал делать через связку формул ИНДЕКС - ПОИСКПОЗ, но беда в том, что она находит и подставляет только первое найденное значение. В нашем примере для Арт.1 это будет только товар А
Можно ли это сделать формулами или здесь без макросов не обойтись? )))))

В прикрепленном файле пример: в Листе 3 сопоставление Товар - Артикул, в Листе 1 нужно сделать обратное сопоставление.
запуск макроса клавишей Enter, не могу запустить рабочий макрос клавишей Enter. что не так делаю?
 
Добрый день! Помогите, пожалуйста! Изучил вопрос запуска Enter-ом в форуме, но макрос не запускается. Подскажите, где ошибка?

есть макрос, который запускался с сочетания клавиш ctri+q:
Код
Sub МакросМС ()
'
' МакросМС Макрос
'
' Сочетание клавиш: Ctrl+q
'
    Range("H2").Select
    Selection.ClearContents
    Range("A2").Select     
    и так далее

Добавляю в него
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)   
   Application.OnKey "{~}", "StartEnter"   
End Sub 

получаю новый макрос:
Код
Sub МакросМС1()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Application.OnKey "{~}", "StartEnter"
End Sub
    Range("H2").Select
    Selection.ClearContents
    Range("A2").Select
    Selection.ClearContents
    With Selection.Interior  
и так далее

Нажимаю Enter, никаких чудес не происходит.
В чем ошибка?
Код
Application.OnKey "{~}", "StartEnter"
 пробовал заменить на
Код
Application.OnKey "{ENTER}", "StartEnter"

тоже не запускается
Изменено: ДмСмирнов - 27.12.2017 20:41:07
Страницы: 1
Наверх