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

Вход

Регистрация

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

 

= Мир MS Excel/Перенос данных в другую таблицу только нужных строк, фильтр - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Перенос данных в другую таблицу только нужных строк, фильтр (Формулы/Formulas)
Перенос данных в другую таблицу только нужных строк, фильтр
sercam Дата: Четверг, 17.02.2022, 15:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не могу сообразить как сделать формулу.
Надо из массива данных по одной из колонок рассортировать данные по разным таблицам, исходя из содержимого в одной колонке.
При этом в зависимости от изменения в основной таблице чтобы данные динамически менялись в отсортированных листах.

Как примерно хочу это видеть - в примере.
К сообщению приложен файл: 7880740.xlsx (12.4 Kb)
 
Ответить
СообщениеНе могу сообразить как сделать формулу.
Надо из массива данных по одной из колонок рассортировать данные по разным таблицам, исходя из содержимого в одной колонке.
При этом в зависимости от изменения в основной таблице чтобы данные динамически менялись в отсортированных листах.

Как примерно хочу это видеть - в примере.

Автор - sercam
Дата добавления - 17.02.2022 в 15:39
Nic70y Дата: Четверг, 17.02.2022, 16:04 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
если использовать доп.столбец, то формула будет простая
К сообщению приложен файл: 11.xlsx (13.7 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениеесли использовать доп.столбец, то формула будет простая

Автор - Nic70y
Дата добавления - 17.02.2022 в 16:04
jakim Дата: Четверг, 17.02.2022, 16:36 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1197
Репутация: 313 ±
Замечаний: 0% ±

Excel 2010
Формула

Код
=IFERROR(INDEX('Исходная таблица'!B$5:B$13;AGGREGATE(15;6;ROW($1:$100)/($G$1='Исходная таблица'!$F$5:$F$130);ROWS($6:6)));"")
К сообщению приложен файл: 3132154.xlsx (13.7 Kb)
 
Ответить
Сообщение
Формула

Код
=IFERROR(INDEX('Исходная таблица'!B$5:B$13;AGGREGATE(15;6;ROW($1:$100)/($G$1='Исходная таблица'!$F$5:$F$130);ROWS($6:6)));"")

Автор - jakim
Дата добавления - 17.02.2022 в 16:36
sercam Дата: Четверг, 17.02.2022, 16:44 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ухх... Элегантно. Сам бы не прикрутил бы такую формулу.

Спасибо огромное!
 
Ответить
СообщениеУхх... Элегантно. Сам бы не прикрутил бы такую формулу.

Спасибо огромное!

Автор - sercam
Дата добавления - 17.02.2022 в 16:44
sercam Дата: Пятница, 18.02.2022, 09:55 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Дополнительный вопрос.
Можно ли переносить и "условное форматирование" переносимых на другие листы ячеек из исходной таблицы?
Или лучше в каждой таблице прописать правила и форматировать содержимое?


Сообщение отредактировал sercam - Пятница, 18.02.2022, 10:07
 
Ответить
СообщениеДополнительный вопрос.
Можно ли переносить и "условное форматирование" переносимых на другие листы ячеек из исходной таблицы?
Или лучше в каждой таблице прописать правила и форматировать содержимое?

Автор - sercam
Дата добавления - 18.02.2022 в 09:55
Nic70y Дата: Пятница, 18.02.2022, 10:19 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
в модуль книги
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "Исходная таблица" Then
        b = Range("g1").Value
        c = Cells(Rows.Count, "c").End(xlUp).Row
        If c > 5 Then Range("c6:g" & c).Clear
        d = Sheets("Исходная таблица").Cells(Rows.Count, "b").End(xlUp).Row
        If d > 4 Then
            For Each e In Sheets("Исходная таблица").Range("f5:f" & d)
                If e = b Then
                    f = Cells(Rows.Count, "c").End(xlUp).Row + 1
                    g = e.Row
                    Sheets("Исходная таблица").Range("b" & g & ":f" & g).Copy Range("c" & f)
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 459.xlsm (20.7 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениев модуль книги
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "Исходная таблица" Then
        b = Range("g1").Value
        c = Cells(Rows.Count, "c").End(xlUp).Row
        If c > 5 Then Range("c6:g" & c).Clear
        d = Sheets("Исходная таблица").Cells(Rows.Count, "b").End(xlUp).Row
        If d > 4 Then
            For Each e In Sheets("Исходная таблица").Range("f5:f" & d)
                If e = b Then
                    f = Cells(Rows.Count, "c").End(xlUp).Row + 1
                    g = e.Row
                    Sheets("Исходная таблица").Range("b" & g & ":f" & g).Copy Range("c" & f)
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 18.02.2022 в 10:19
sercam Дата: Пятница, 18.02.2022, 10:40 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
в модуль книги


На примере - работает, на реальном файле у меня - нет. Возможно из-за объединённых ячеек некоторых на листе.

Как понять, разобрать этот макрос, чтобы исправить?
Может выбрать не весь лист как исходный, а только диапазон таблицы, где нет объединённых ячеек?
 
Ответить
Сообщение
в модуль книги


На примере - работает, на реальном файле у меня - нет. Возможно из-за объединённых ячеек некоторых на листе.

Как понять, разобрать этот макрос, чтобы исправить?
Может выбрать не весь лист как исходный, а только диапазон таблицы, где нет объединённых ячеек?

Автор - sercam
Дата добавления - 18.02.2022 в 10:40
Nic70y Дата: Пятница, 18.02.2022, 10:42 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
файл близкий к оригиналу можете приложить?


ЮMoney 41001841029809
 
Ответить
Сообщениефайл близкий к оригиналу можете приложить?

Автор - Nic70y
Дата добавления - 18.02.2022 в 10:42
sercam Дата: Пятница, 18.02.2022, 12:20 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
близкий к оригиналу


можно. примерно так. только строк больше и городов больше.
К сообщению приложен файл: 3186137.xlsx (24.3 Kb)
 
Ответить
Сообщение
близкий к оригиналу


можно. примерно так. только строк больше и городов больше.

Автор - sercam
Дата добавления - 18.02.2022 в 12:20
Nic70y Дата: Пятница, 18.02.2022, 12:35 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "Общая" Then
        b = Range("c3").Value
        c = Cells(Rows.Count, "b").End(xlUp).Row
        If c > 8 Then Range("a9:h" & c).Clear
        d = Sheets("Общая").Cells(Rows.Count, "b").End(xlUp).Row
        If d > 7 Then
            For Each e In Sheets("Общая").Range("g8:g" & d)
                If e = b Then
                    f = Cells(Rows.Count, "b").End(xlUp).Row + 1
                    If f = 8 Then f = 9
                    g = e.Row
                    Sheets("Общая").Range("a" & g & ":h" & g).Copy Range("a" & f)
                    Range("a" & f) = f - 8
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 458.xlsm (30.3 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Name
    If a <> "Общая" Then
        b = Range("c3").Value
        c = Cells(Rows.Count, "b").End(xlUp).Row
        If c > 8 Then Range("a9:h" & c).Clear
        d = Sheets("Общая").Cells(Rows.Count, "b").End(xlUp).Row
        If d > 7 Then
            For Each e In Sheets("Общая").Range("g8:g" & d)
                If e = b Then
                    f = Cells(Rows.Count, "b").End(xlUp).Row + 1
                    If f = 8 Then f = 9
                    g = e.Row
                    Sheets("Общая").Range("a" & g & ":h" & g).Copy Range("a" & f)
                    Range("a" & f) = f - 8
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 18.02.2022 в 12:35
sercam Дата: Пятница, 18.02.2022, 13:18 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Private Sub

Хм. у меня почему то макрос сработал, условное форматирование на листы перенёс, но...
с основного листа исчезли все строчки, кроме первой, удалились.

Если в ваш файл данные вставляю - всё нормально.


Сообщение отредактировал sercam - Пятница, 18.02.2022, 13:19
 
Ответить
Сообщение
Private Sub

Хм. у меня почему то макрос сработал, условное форматирование на листы перенёс, но...
с основного листа исчезли все строчки, кроме первой, удалились.

Если в ваш файл данные вставляю - всё нормально.

Автор - sercam
Дата добавления - 18.02.2022 в 13:18
Nic70y Дата: Пятница, 18.02.2022, 13:21 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
sercam, вы лист "Общая" случайно не переименовали?
макрос рассчитан на имя этого листа.
можете в макросе все Sheets("Общая") заменить на Sheets(1)
если он будет всегда первым.

index забыл для (1)
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Index
    If a <> 1 Then
        b = Range("c3").Value
        c = Cells(Rows.Count, "b").End(xlUp).Row
        If c > 8 Then Range("a9:h" & c).Clear
        d = Sheets(1).Cells(Rows.Count, "b").End(xlUp).Row
        If d > 7 Then
            For Each e In Sheets(1).Range("g8:g" & d)
                If e = b Then
                    f = Cells(Rows.Count, "b").End(xlUp).Row + 1
                    If f = 8 Then f = 9
                    g = e.Row
                    Sheets(1).Range("a" & g & ":h" & g).Copy Range("a" & f)
                    Range("a" & f) = f - 8
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 18.02.2022, 13:25
 
Ответить
Сообщениеsercam, вы лист "Общая" случайно не переименовали?
макрос рассчитан на имя этого листа.
можете в макросе все Sheets("Общая") заменить на Sheets(1)
если он будет всегда первым.

index забыл для (1)
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    a = ActiveSheet.Index
    If a <> 1 Then
        b = Range("c3").Value
        c = Cells(Rows.Count, "b").End(xlUp).Row
        If c > 8 Then Range("a9:h" & c).Clear
        d = Sheets(1).Cells(Rows.Count, "b").End(xlUp).Row
        If d > 7 Then
            For Each e In Sheets(1).Range("g8:g" & d)
                If e = b Then
                    f = Cells(Rows.Count, "b").End(xlUp).Row + 1
                    If f = 8 Then f = 9
                    g = e.Row
                    Sheets(1).Range("a" & g & ":h" & g).Copy Range("a" & f)
                    Range("a" & f) = f - 8
                End If
            Next
        End If
    End If
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 18.02.2022 в 13:21
sercam Дата: Пятница, 18.02.2022, 13:33 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sercam, вы лист "Общая" случайно не переименовали?

Переименовал, конечно, но и в макросе переименовал.

А вот с новой версией с указанием листа "1" - всё супер!
 
Ответить
Сообщение
sercam, вы лист "Общая" случайно не переименовали?

Переименовал, конечно, но и в макросе переименовал.

А вот с новой версией с указанием листа "1" - всё супер!

Автор - sercam
Дата добавления - 18.02.2022 в 13:33
sercam Дата: Пятница, 18.02.2022, 13:35 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Теперь, получается, и формулы не нужны, которые изначально были заложены в других листах. Макрос всё делает.
 
Ответить
СообщениеТеперь, получается, и формулы не нужны, которые изначально были заложены в других листах. Макрос всё делает.

Автор - sercam
Дата добавления - 18.02.2022 в 13:35
Nic70y Дата: Пятница, 18.02.2022, 13:53 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
формулы не нужны
не нужны, даже если они там были - макрос их удалит.


ЮMoney 41001841029809
 
Ответить
Сообщение
формулы не нужны
не нужны, даже если они там были - макрос их удалит.

Автор - Nic70y
Дата добавления - 18.02.2022 в 13:53
sercam Дата: Пятница, 18.02.2022, 14:06 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я уже это понял.
Очень круто. Спасибо.
Жаль я в макросах не силён, формулы привычнее.
 
Ответить
СообщениеЯ уже это понял.
Очень круто. Спасибо.
Жаль я в макросах не силён, формулы привычнее.

Автор - sercam
Дата добавления - 18.02.2022 в 14:06
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Перенос данных в другую таблицу только нужных строк, фильтр (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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