Страницы: 1
RSS
Перемещение строк из столбца таблицы на другой лист по условию, Нужна формула, чтобы переместить искомое значение в другой лист при условии
 
Добрый вечер!Помогите найти нужную формулу, чтобы из столбца А на странице BASE при условии, что текст будет содержать Крд 003, вся строка (полное наименование) было перенесено на лист 1.И так каждая последующая строка,с тем же условием, одна за одной, без пустых строк.
Изменено: Dasha$23 - 06.05.2026 22:19:22
 
Добрый вечер. Можно так
Код
=ЕСЛИОШИБКА(ИНДЕКС(BASE!$A$4:$A$12;АГРЕГАТ(15;6;СТРОКА($1:$20)/(НАЙТИ("Крд003";BASE!$A$4:$A$12)=1);СТРОКА(A1)));"")
Для офиса 2021+ такая формула
Код
=ФИЛЬТР(BASE!A4:A12;ЕЧИСЛО(НАЙТИ("Крд003";BASE!A4:A12)))
Или такая
Код
=LET(Z;BASE!A4:A12;ФИЛЬТР(Z;ЕЧИСЛО(НАЙТИ("Крд003";Z))))
Изменено: Старичок - 06.05.2026 22:35:23
 
спасибо, а если есть строки где искомое значение Крд003 стоит не в начале строки, а в середине, в конце текста?
 
Dasha$23, Добрый день, попробуйте так.

=ЕСЛИОШИБКА(ИНДЕКС(BASE!$A$4:$A$46;НАИМЕНЬШИЙ(ЕСЛИ(ЕЧИСЛО(ПОИСК("Крд003";BASE!$A$4:$A$46));СТРОКА(BASE!$A$4:$A$46)-СТРОКА(BASE!$A$3));СТРОКА()-СТРОКА($A$2)));"")

формула массива (Ctrl+Shift+Enter)
 
Dasha$23, Добро Пожаловать на данный форум. Как вариант вашу задачу можно решить и макросом.
Код
Option Explicit

Sub FindAndAppendRows()
    Dim i&, n&

    With ThisWorkbook.Worksheets("BASE")

        Dim lrB     As Long
        lrB = .Cells(.Rows.Count, 1).End(xlUp).Row
        If lrB < 4 Then Exit Sub

        Dim a       As Variant
        a = .Range("A4:H" & lrB).Value
    End With

    Dim r()         As Variant
    ReDim r(1 To UBound(a), 1 To 7)

    For i = 1 To UBound(a)

        If InStr(1, Replace$(a(i, 1), " ", ""), "Крд003", vbTextCompare) Then
            n = n + 1

            r(n, 1) = a(i, 1)
            r(n, 2) = a(i, 3)
            r(n, 3) = a(i, 4)
            r(n, 4) = a(i, 5)
            r(n, 5) = a(i, 6)
            r(n, 6) = a(i, 7)
            r(n, 7) = a(i, 8)
        End If

    Next i

    If n = 0 Then Exit Sub

    With ThisWorkbook.Worksheets("1")

        '        ' 1). Вариант если всегда хотите внести данные с новой (пустой) строки и вниз при повторном запуске макроса
        '        Dim lrR     As Long
        '        lrR = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

        '        .Range("A" & lrR).Resize(n, 7).Value = r

        ' 2). Вариант если всегда хотите внести данные в ячейку A3 при повторном запуске макроса
        .Range("A3:G" & .Rows.Count).ClearContents
        .Range("A3").Resize(n, 7).Value = r
    End With

End Sub
 
Всем большое спасибо за ответы))
Страницы: 1
Читают тему
Наверх