Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310

Добавление строк по условию

27.06.2021, 14:05. Показов 7125. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!
Есть прайс лист на 1000 позиций в excel,
нужно сделать второй лист, чтоб там отображались только те строки прайса, у которых столбец "Количество" не пустой.
То есть строки добавлялись по условию, на листе прайса она например 10, а на новом листе она окажется первой.
Подскажите решение задачи)

НазваниеКод товараЦенаКол-воСуммаМагазин
Кабель силовой ВВГ-Пнг(А)-LS 2*1.5184775743,55  ЭТМ
Кабель силовой ВВГ-Пнг(А)-LS 3*1.5524295562,041 ЭТМ
Кабель силовой ВВГ-нг(А)-LS 4*1.5675120383,11  ЭТМ
Кабель силовой ВВГ-Пнг(А)-LS 2х2.5717459469,841 ЭТМ

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

НазваниеКод товараЦенаКол-воСуммаМагазин
Кабель силовой ВВГ-Пнг(А)-LS 3*1.5524295562,04162,04ЭТМ
Кабель силовой ВВГ-Пнг(А)-LS 2х2.5717459469,84169,84ЭТМ
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2021, 14:05
Ответы с готовыми решениями:

Добавление пустых строк вверх и вниз и добавление нескольких цифр в ячейки
День добрый. Надо добавить одну пустую строку вверх и одну в низ, так же добавить пару цифр и букву (они выделены красным цветом в...

Добавление в таблицу новых строк по определенному условию (Entity Framework)
Всем здравствуйте! Помогите, пожалуйста, разобраться. Новая для меня ветка в разработке. Прочекал много инфы, адаптировать смог под себя не...

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение...

11
Динохромный
1627 / 767 / 285
Регистрация: 22.12.2015
Сообщений: 2,403
27.06.2021, 14:33
xxxspeed, отфильтруйте фильтром по строке "кол-во" и скопируйте отфильтрованные значения на новый лист путем обычного выделить-копировать-вставить.
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 14:35  [ТС]
Это понятно, мне просто нужно автоматом, что б все делалось.
При изменении листа прайс, данные сразу менялись на втором листе.

Я написал формулы, чтоб на втором листе данные сразу отображались, но они отображаются в тех же строках.
Можно отсортировать и все будет ок.
Если есть вариант с авто сортировкой, при изменении таблица автоматически заново сортируется.
0
Динохромный
1627 / 767 / 285
Регистрация: 22.12.2015
Сообщений: 2,403
27.06.2021, 14:46
Цитата Сообщение от xxxspeed Посмотреть сообщение
Либо если есть вариант с авто сортировкой, при изменении таблица автоматически заново сортируется.
Сложно сказать - кроме вас вашу таблицу никто видел.
Если таблицу оформить через ctrl+L как умную таблицу, и она на листе единственная - то достаточно в модуль листа скопировать код:
Visual Basic Скопировано
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
Me.ListObjects.Item(1).Range.AutoFilter Field:=4, Criteria1:="<>"
End Sub
Только если вы вручную вбиваете новые данные - начинайте с 4 столбца - который "количество", иначе таблица скроет новую строчку раньше, чем вы успеете ввести все ячейки строки. С копированием проблем быть не должно.
1
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 15:48  [ТС]
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Сложно сказать - кроме вас вашу таблицу никто видел.
Краткий фрагмент таблицы я опубликовал.

С листа прайс на второй лист данные я переношу формулой =ЕСЛИ(Прайс!$D2="";"";Прайс!A2).

Код работает, я его добавил на второй лист. Единственное, нужно на втором листе сделать любое изменение, чтоб код сработал.
Как сделать, чтоб код на втором листе срабатывал при изменении первого листа?

Добавлено через 12 минут
Поправлюсь, при изменении колонки D (а лучше при изменении колонки в которой написано "Кол-во") на первом листе, срабатывал этот код на втором листе.
Потому что когда вышеуказанная формула изменяет выводимые значения код не срабатывает.
0
6023 / 3217 / 719
Регистрация: 23.11.2010
Сообщений: 10,753
27.06.2021, 16:11
Цитата Сообщение от xxxspeed Посмотреть сообщение
Краткий фрагмент таблицы я опубликовал
это картинка, тут даже названий столбцов не видно, это к тому
Цитата Сообщение от xxxspeed Посмотреть сообщение
при изменении колонки D
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 16:23  [ТС]
Цитата Сообщение от Fairuza Посмотреть сообщение
это картинка, тут даже названий столбцов не видно, это к тому
Верно подмечено, извиняюсь.
Вот файл с добавленным кодом,
с кодом файл не поддерживается сайтом
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 16:27  [ТС]
Вот файл, но без кода
Вложения
Тип файла: xlsx Прайс.xlsx (14.9 Кб, 13 просмотров)
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 16:31  [ТС]
Вот файл.
В файле выше из за удаления кода не корректный второй лист.
Вложения
Тип файла: xlsx Прайс.xlsx (12.5 Кб, 18 просмотров)
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
27.06.2021, 16:53  [ТС]
Вопрос вроде решился, разобрался.
При переключении на второй лист происходит обновление.
Изменил код вот так:
Visual Basic Скопировано
1
2
3
Private Sub Worksheet_Activate()
Me.ListObjects.Item(1).Range.AutoFilter Field:=4, Criteria1:="<>"
End Sub
0
Динохромный
1627 / 767 / 285
Регистрация: 22.12.2015
Сообщений: 2,403
29.06.2021, 10:08
xxxspeed, прошу прощения - руки не дошли написать.
Ваше решение оптимально, единственно - саму таблицу второго листа нужно руками растягивать (ну или изначально она должна быть много больше, чем на первом). В принципе, это можно программно делать. Насколько у вас актуально добавление строк в первую таблицу (если всего строк 1000, то во второй таблице можно сделать сразу 2000 и не париться с дополнительными решениями. Либо вставлять новые строки в табл2 каждый раз, когда добавились строки в табл1).
0
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 310
29.06.2021, 21:59  [ТС]
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Ваше решение оптимально
Вот еще решение которое мне подсказали

Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Worksheet_Activate()
Dim sh As Worksheet, sh2 As Worksheet, arr, arr2, i As Long, n As Long, x As Long, k As Long, lr As Long, lr2 As Long
Set sh = Worksheets("Прайс"): Set sh2 = Worksheets("Прайс2")
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
lr2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row
arr = sh.Range("A1:G" & lr)
k = Application.WorksheetFunction.CountIf(sh.Columns(4), "<>" & "")
ReDim arr2(1 To k, 1 To 7): x = 1
For i = LBound(arr) To UBound(arr)
    If Not IsEmpty(arr(i, 4)) Then
        For n = 1 To 7
            arr2(x, n) = arr(i, n)
        Next n
        x = x + 1
    End If
Next i
If lr2 >= 4 Then sh2.Range("A4:G" & lr2).Clear
sh2.Range("A4").Resize(UBound(arr2), 7) = arr2
End Sub
Подскажите только как изменить путь к листу в
Visual Basic Скопировано
1
Set sh2 = Worksheets("Прайс2")
,
и в коде
Visual Basic Скопировано
1
2
3
Private Sub Worksheet_Activate()
Me.ListObjects.Item(1).Range.AutoFilter Field:=4, Criteria1:="<>"
End Sub
чтоб копировал данные в другой файл.

Но в том решении есть свой плюс. Остаются рамки в таблице
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2021, 21:59
Помогаю со студенческими работами здесь

Добавление ячейки по условию
Добрый день. Помогите, пожалуйста. Суть вопроса: На листе 1 приведена таблица, из этой таблицы на лист 2 необходимо перенести...

Добавление записи в БД по условию
можно ли как то сделать добавления в бд по условию? $result=mysql_query(&quot;INSERT INTO `tblhosting` (block) VALUES ('1') where ...

Миллионы строк. добавление новых строк занимает очень много времени
здравствуйте, столкнулся с такой проблемой: в базе данных access несколько миллионов строк, заношу их туда программно c#. как следствие,...

Добавление комментария к ячейке по условию
Добрый день. Помогите, пожалуйста, написать макрос. Суть задачи следующая: есть список клиентов, где некоторые клиенты могут...

Добавление в строку символа по условию
public string Addsymboldublicate(string _opentext) { for (int r = 0; r &lt; _opentext.Length - 1; r++) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи с помощью арктангенса для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Публикация в доработке, метод арктангенса в комментариях внизу. Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу. . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер