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

Страницы: 1
Автоматически подтягивать стоимость на второй лист, при изменении на главном.
 
Спасибо Igor61, интересная реализация, буду сидеть теперь разбирать
Автоматически подтягивать стоимость на второй лист, при изменении на главном.
 
Скинул другой док, надеюсь понятно изложил что хочу, чтобы стоимость автоматически подтягивалась на второй лист, при изменении на главном.  
Изменено: proga19 - 22.12.2017 17:24:16
Автоматически подтягивать стоимость на второй лист, при изменении на главном.
 
Есть такой документ, на "главном " листе необходимо притянуть столбец "нужные данные" на лист "второй". Сначала реализовал с помощью функции ПРОСМОТР для одного столбца, но в документе будет больше 10 000 строк и работает это очень долго для 1 столбца, а для всех я уже молчу. Теперь хочу попытаться реализовать с помощью "Индекса и поиск позиции" (по средство макроса разумеется в виде кнопки).
Это старая реализация.
Как лучше подойти ?

Код
Sub Макрос1()

    Application.ScreenUpdating = False 'Отключаем обновление экрана
    Sheets("главный").Select
    
    'Получаем кол-во заполененных строк'
    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 11 To LastRow
        If Cells(i, 11).Value = "" Then Exit For
    Next
    
    'Заполенение 1 столбца'
    Sheets("второй").Select
        For i = 11 To LastRow
            Cells(i - 5, 5).Formula = "=LOOKUP(2,1/(($A" & i - 5 & "=главный!$A" & i & ":$A$" & LastRow & ")*($B" & i - 5 & "=главный!$B" & i & ":$B" & LastRow & ")*($C" & i - 5 & "=главный!$C" & i & ":$C" & LastRow & ")*($D" & i - 5 & "=главный!$D" & i & ":$D" & LastRow & ")),главный!$E" & i & ":$E" & LastRow & ")"
Код
If Cells(i - 5, 5) = 0 Then
Cells(i - 5, 5).Value = ""
End If
Next i
Application.ScreenUpdating = True

End Sub
Изменено: proga19 - 22.12.2017 13:39:56
Написание формулы в цикле, Подставить в формулу переменную
 
Казанский вы гений, значения надо подтягивать из многих столбцов, поэтому разумнее всего один раз вычислить номер строки (проверить ее совпадение) и притягивать все данные столбцов.
Сейчас приложу пример.
Так понимаю нужно использовать Индекс вместе поискпозиции?
Написание формулы в цикле, Подставить в формулу переменную
 
ДА, Спасибо, разобрался,  получилось такое, правда код долго работает, есть какие нибудь рекомендации по ускорению процесса?
В таблице больше 10 000 строк и у меня автоматически притягиваются данные только в 1 столбец, а там их 15-20, т.е работать будет я даже представить не могу как долго, если я остальные столбцы буду тоже также притягивать.
Код
Sub Макрос1()
    Application.ScreenUpdating = False
    Sheets("нормы").Select
    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 11 To LastRow
        If Cells(i, 11).Value = "" Then Exit For
    Next
    Sheets("норма времени").Select
    For i = 11 To LastRow
        Cells(i - 5, 5).Formula = "=LOOKUP(2,1/(($A" & i - 5 & "=нормы!$A" & i & ":$A$" & LastRow & ")*($B" & i - 5 & "=нормы!$B" & i & ":$B" & LastRow & ")*($C" & i - 5 & "=нормы!$C" & i & ":$C" & LastRow & ")*($D" & i - 5 & "=нормы!$D" & i & ":$D" & LastRow & ")),нормы!$E" & i & ":$E" & LastRow & ")"
            If Cells(i - 5, 5) = 0 Then
                Cells(i - 5, 5).Value = ""
            End If
    Next i
    Application.ScreenUpdating = True
End Sub
Изменено: proga19 - 22.12.2017 11:02:42
Написание формулы в цикле, Подставить в формулу переменную
 
Что то похожее я находил тут
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=81220
Но правда не понял как мне передать параметр
Написание формулы в цикле, Подставить в формулу переменную
 
Можете чуть конкретнее
Написание формулы в цикле, Подставить в формулу переменную
 
Уже думал это троллинг с кнопкой <...>
Написание формулы в цикле, Подставить в формулу переменную
 
Не понял вас
Написание формулы в цикле, Подставить в формулу переменную
 
Доброго утречка. Есть такая формула:
Код
=ПРОСМОТР(2;1/(($A6=нормы!$A$11:$A$10399)*($B6=нормы!$B$11:$B$10399)*($C6=нормы!$C$11:$C$10399)*($D6=нормы!$D$11:$D$10399));нормы!$E$11:$E$10399)
Но не суть, хочу чтобы она выполнялась в макросе, пишу цикл:
Код
Sub Macros()

Dim LastRow As Long, CountString As Long
   LastRow = Cells(Rows.Count, 1).End(xlUp).Row' определяем кол-во строк в нашему диапазоне (непустых)
    For CountString = 11 To LastRow
        If Cells(CountString, 11).Value = "" Then Exit For
    Next

    For i = CountString To LastRow
         Range(i, 5).Formula = "=Просмотр(2;1/(($A(i-6)=нормы!$A$11:$A$10399)*($B(i-6)=нормы!$B$11:$B$10399)*($C(i-6)=нормы!$C$11:$C$10399)*($D(i-6)=нормы!$D$11:$D$10399));нормы!$E$11:$E$10399)"

Как в формулу передать i?
Спасибо
Изменено: proga19 - 22.12.2017 07:30:23
Найти в массиве значение по параметрам и копировать
 
Даже не знал про такую функцию как "ПРОСМОТР
Найти в массиве значение по параметрам и копировать
 
СПАСИБО, буду пытаться реализовать через макрос.
Найти в массиве значение по параметрам и копировать
 
А можете объяснить, что означает (2;1) в формуле?
Найти в массиве значение по параметрам и копировать
 
Да, нужен макрос который проще говоря сделает подробный лист  с нормами времени.
Изменено: proga19 - 21.12.2017 09:49:43
Найти в массиве значение по параметрам и копировать
 
Доброго времени суток "Мозгеры"! Прошу помочь с решением данной задачи:
Есть 2 листа, на одном записана информация о изделиях, норме времени и премии. Во втором тоже самое только без столбца премия.
Необходимо написать макрос, который бы ( сделаю кнопку) искал изделие по параметрам ( типоразмер, S ) и копировал для каждого такого изделия норму времени в лист "Норма времени".
Для наглядности прикладываю пример:
Спасибо.

А вообще так подумал, можно сделать проще, просто скопировать, но как это будет выглядеть пока не понимаю
Изменено: proga19 - 21.12.2017 18:36:02
Как скопировать диапазон в столбце до последней заполненной ячейки?
 
СПАСИБО!
Как скопировать диапазон в столбце до последней заполненной ячейки?
 
Прикол в том, что я не знаю вторую границу диапазона. Help
Как скопировать диапазон в столбце до последней заполненной ячейки?
 
Чтобы наглядно было понятно
Изменено: proga19 - 06.12.2017 07:58:00
Как скопировать диапазон в столбце до последней заполненной ячейки?
 
Это я понял, НО
1. Выше ячейки J174 есть другие записи и ниже тоже, они отделены пробелом,  т.е мои данные находятся в этом промежутке, я пытался пройти циклом по этому диапазону, условие пока следующая запись не пустая.
Как скопировать диапазон в столбце до последней заполненной ячейки?
 
Доброе утро всем. Начинаю осваивать VBA. Назрел вопрос:
Нужно скопировать столбец ячеек начиная с ячейки J174 (до первой пустой ячейки) и вставить его например в W174.
Не могу понять как мне пройти по этому столбцу начиная с нужной ячейки и до конца, т.к записей может быть 2, а может и 1000, пытаюсь реализовать это посредством макроса.
Спасибо..
Изменено: proga19 - 06.12.2017 07:37:29
Страницы: 1
Наверх