Страницы: 1
RSS
Копирование строк на другой лист по условию
 
Здравствуйте товарищи знатоки. Снова приходится обращаться за вашей помощью. В общем, имеется умная таблица. Следующий алгоритм таков;
- нужно пробежаться по всем строкам(точного числа их нет);
- if ячейка столбца F="Дерево" and J=-1 then  копируем всю строку на новый лист.

Подсчитать количество строк я могу, а вот дальше затрудняюсь. Хотелось бы без автофильтра решить данную задачу, хотя и с ним бы вариант рассмотрел.  
 
И Вам здравствовать. Решение с доп. столбцом
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Максим В., идею понял спасибо, вот только, чувствуется мне, что закодировать сие действие у меня мозгов не хватит
 
Ребята, подтолкните частичкой кода, откуда плясать начать.  
 
У вас там 2 "умные" таблицы специально сделаны? Можно ли их объединить в одну? Если да, то можно забрать значения в массив, прогнать циклом по строкам, находя совпадения и заполняя найденными строками с совпадениями другой массив, а потом итоговый массив выгрузить на нужный лист.
А если 2 умные таблицы необходимы, то можно забирать их значения в 2 исходных массива и проверять каждый на совпадения заданным величинам каждый в своей части.
Кому решение нужно - тот пример и рисует.
 
Пытливый, умная таблица одна, во второй вкладке таблица лишь для примера, в нее хочу копировать нужные отфильтрованные данные из первой
 
Пытливый, вы правильно говорите, забирать значения из первого массива, проверять на условия и вставлять во вторую вкладку
 
У вас на исходном листе 2 умный таблицы: Таблица 7 (столбцы с В по D) и Таблица 6 (все остальные). Я и спрашиваю - это надо так, или можно объединить в одну?
Кому решение нужно - тот пример и рисует.
 
Тогда это нужно рассматривать как один массив
 
В третий раз спросил старик у старухи:
В одну таблицу исходные данные объединить можно? (вроде я понятно спрашиваю, нет?)
Изменено: Пытливый - 26.11.2019 16:20:42
Кому решение нужно - тот пример и рисует.
 
Да да да, объединять нужно
 
Можно таким тогда:
Код
Sub IlikeThrees()
    Dim arrIn, arrOut, lngI As Long, lngJ As Long, lngK As Long
    With Worksheets("Импорт")
        arrIn = .Range("b1").ListObject.DataBodyRange.Value
        ReDim arrOut(1 To UBound(arrIn, 1), 1 To UBound(arrIn, 2))
    End With
    For lngI = 1 To UBound(arrIn, 1)
        If arrIn(lngI, 4) = "Дерево" And arrIn(lngI, 9) = -1 Then
            lngK = lngK + 1
            For lngJ = 1 To UBound(arrIn, 2)
                arrOut(lngK, lngJ) = arrIn(lngI, lngJ)
            Next lngJ
        End If
    Next lngI
    With Worksheets("Вставка")
        .UsedRange.Clear
        .Range("b2").Resize(lngK, UBound(arrOut, 2)) = arrOut
    End With
End Sub

Только исходные данные надо запихнуть в одну умную таблицу.
Изменено: Пытливый - 26.11.2019 16:47:04
Кому решение нужно - тот пример и рисует.
 
Кланяюсь Вам!
 
Пытливый, в одну таблицу свел, вставил ваш код, но почему то ругается на эту строку

.Range("b2").Resize(lngK, UBound(arrOut, 2)) = arrOut

Пишет Application-defined or object-defined
error
Изменено: Malysheff - 28.11.2019 08:29:30
 
Как вариант.
 
Вот это, действительно, рабочий вариант. спасибо
Страницы: 1
Наверх