Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос отфильтрованных данных на другой лист - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Перенос отфильтрованных данных на другой лист
truk Дата: Суббота, 28.06.2025, 16:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

2007,2021
Здравствуйте. Столкнулся с проблемой в части отсутствия в версии эксель 2007 года функции фильтр. Необходимо что бы отфильтрованные данные с листа "НРэ 2025" вставлялись на лист "ТО-15э" в ячейки "A:G" в зависимости от значения в ячейки "I1" листа "ТО-15э" Остальные значения считаются по формуле (уже в таблице, если есть возможность и этот вопрос сделать как то проще, то буду рад помощи). Фильтрация на листе "НРэ 2025" происходит по столбцу B начиная с 6 строки. Можете ли помочь решить данную проблему через макрос, что бы работал в эксель 2007 года?
К сообщению приложен файл: shablon_nr_nov.xlsx (99.5 Kb)
 
Ответить
СообщениеЗдравствуйте. Столкнулся с проблемой в части отсутствия в версии эксель 2007 года функции фильтр. Необходимо что бы отфильтрованные данные с листа "НРэ 2025" вставлялись на лист "ТО-15э" в ячейки "A:G" в зависимости от значения в ячейки "I1" листа "ТО-15э" Остальные значения считаются по формуле (уже в таблице, если есть возможность и этот вопрос сделать как то проще, то буду рад помощи). Фильтрация на листе "НРэ 2025" происходит по столбцу B начиная с 6 строки. Можете ли помочь решить данную проблему через макрос, что бы работал в эксель 2007 года?

Автор - truk
Дата добавления - 28.06.2025 в 16:33
bigor Дата: Суббота, 28.06.2025, 17:04 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1374
Репутация: 268 ±
Замечаний: 0% ±

нет
truk, для старых офисов в А8, массивная, выводит столбец B, для остальных столбцов подставляйте их номер вместо последней 1 (считая, что b это номер 1)
Код
=IFERROR(INDEX('НРэ 2025'!$B$6:$I$40;SMALL(IF($I$1='НРэ 2025'!$B$6:$B$40;ROW($A$1:$A$35);"");ROW(A1));1);"")


Сообщение отредактировал bigor - Суббота, 28.06.2025, 17:04
 
Ответить
Сообщениеtruk, для старых офисов в А8, массивная, выводит столбец B, для остальных столбцов подставляйте их номер вместо последней 1 (считая, что b это номер 1)
Код
=IFERROR(INDEX('НРэ 2025'!$B$6:$I$40;SMALL(IF($I$1='НРэ 2025'!$B$6:$B$40;ROW($A$1:$A$35);"");ROW(A1));1);"")

Автор - bigor
Дата добавления - 28.06.2025 в 17:04
truk Дата: Суббота, 28.06.2025, 17:31 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

2007,2021
bigor, Спасибо. Частично помогло решить проблему, но появились новые вопросы) Массив не подтягивает данные если номер столбца в массиве 9 или больше + почему то не считаются значения по формуле в соседних ячейках, а ячейки где значения пустые как я понял выводят сумму количества ячеек. Есть ли другой способ как реализовать автоматическую подстановку данных?
К сообщению приложен файл: 7733240.xlsx (109.7 Kb)


Сообщение отредактировал truk - Суббота, 28.06.2025, 17:32
 
Ответить
Сообщениеbigor, Спасибо. Частично помогло решить проблему, но появились новые вопросы) Массив не подтягивает данные если номер столбца в массиве 9 или больше + почему то не считаются значения по формуле в соседних ячейках, а ячейки где значения пустые как я понял выводят сумму количества ячеек. Есть ли другой способ как реализовать автоматическую подстановку данных?

Автор - truk
Дата добавления - 28.06.2025 в 17:31
MikeVol Дата: Суббота, 28.06.2025, 17:39 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 443
Репутация: 105 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
truk, Вариант макросом: [vba]
Код
Option Explicit

Sub copyData()
    Application.ScreenUpdating = False
    Dim i           As Long

    Dim desWS       As Worksheet
    Set desWS = ThisWorkbook.Worksheets("ТО-15э")

    Dim crt         As String
    crt = desWS.Range("I1").Value

    Dim j           As Long
    j = 8

    Dim lastDesRow  As Long
    lastDesRow = Application.Max(8, desWS.Cells(desWS.Rows.Count, "A").End(xlUp).Row)
    desWS.Range("A8:G" & lastDesRow).ClearContents

    With ThisWorkbook.Worksheets("НРэ 2025")
        If .AutoFilterMode Then .AutoFilterMode = False

        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        .Range("A4:O" & lastRow).AutoFilter Field:=2, Criteria1:="=" & crt

        For i = 5 To lastRow

            If Not .Rows(i).Hidden Then
                desWS.Range("A" & j).Value = crt
                desWS.Range("B" & j & ":E" & j).Value = .Range("E" & i & ":H" & i).Value
                desWS.Range("F" & j).Value = .Range("L" & i).Value
                desWS.Range("G" & j).Value = .Range("P" & i).Value
                j = j + 1
            End If

        Next i

        .AutoFilterMode = False
    End With

    Application.ScreenUpdating = True
End Sub
[/vba]


Ученик.
Одесса - Украина


Сообщение отредактировал MikeVol - Суббота, 28.06.2025, 17:45
 
Ответить
Сообщениеtruk, Вариант макросом: [vba]
Код
Option Explicit

Sub copyData()
    Application.ScreenUpdating = False
    Dim i           As Long

    Dim desWS       As Worksheet
    Set desWS = ThisWorkbook.Worksheets("ТО-15э")

    Dim crt         As String
    crt = desWS.Range("I1").Value

    Dim j           As Long
    j = 8

    Dim lastDesRow  As Long
    lastDesRow = Application.Max(8, desWS.Cells(desWS.Rows.Count, "A").End(xlUp).Row)
    desWS.Range("A8:G" & lastDesRow).ClearContents

    With ThisWorkbook.Worksheets("НРэ 2025")
        If .AutoFilterMode Then .AutoFilterMode = False

        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        .Range("A4:O" & lastRow).AutoFilter Field:=2, Criteria1:="=" & crt

        For i = 5 To lastRow

            If Not .Rows(i).Hidden Then
                desWS.Range("A" & j).Value = crt
                desWS.Range("B" & j & ":E" & j).Value = .Range("E" & i & ":H" & i).Value
                desWS.Range("F" & j).Value = .Range("L" & i).Value
                desWS.Range("G" & j).Value = .Range("P" & i).Value
                j = j + 1
            End If

        Next i

        .AutoFilterMode = False
    End With

    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - MikeVol
Дата добавления - 28.06.2025 в 17:39
gling Дата: Суббота, 28.06.2025, 17:56 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2643
Репутация: 739 ±
Замечаний: 0% ±

2010
Здравствуйте.
Попробуйте ещё вариант.
Код
=ЕСЛИОШИБКА(ИНДЕКС(ИНДЕКС('НРэ 2025'!B:B;ПОИСКПОЗ('ТО-15э'!$I$1;'НРэ 2025'!$B:$B;)):ИНДЕКС('НРэ 2025'!B:B;ПОИСКПОЗ('ТО-15э'!$I$1;'НРэ 2025'!$B:$B;)-1+СЧЁТЕСЛИ('НРэ 2025'!$B:$B;'ТО-15э'!$I$1));СТРОКА(A1));"")
К сообщению приложен файл: primer_85.xlsx (9.5 Kb)


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте.
Попробуйте ещё вариант.
Код
=ЕСЛИОШИБКА(ИНДЕКС(ИНДЕКС('НРэ 2025'!B:B;ПОИСКПОЗ('ТО-15э'!$I$1;'НРэ 2025'!$B:$B;)):ИНДЕКС('НРэ 2025'!B:B;ПОИСКПОЗ('ТО-15э'!$I$1;'НРэ 2025'!$B:$B;)-1+СЧЁТЕСЛИ('НРэ 2025'!$B:$B;'ТО-15э'!$I$1));СТРОКА(A1));"")

Автор - gling
Дата добавления - 28.06.2025 в 17:56
truk Дата: Суббота, 28.06.2025, 21:57 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

2007,2021
MikeVol, Большое спасибо за помощь. Все работает.
 
Ответить
СообщениеMikeVol, Большое спасибо за помощь. Все работает.

Автор - truk
Дата добавления - 28.06.2025 в 21:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!