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

Вход

Регистрация

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

 

= Мир MS Excel/Создание перечня с количеством по критерию - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Создание перечня с количеством по критерию
ZamoK Дата: Четверг, 24.09.2015, 09:31 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
День добрый! Помогите с кодом если не сложно.
Нужно найти тот узел куда входит искомая единица на листе "Состав узлов", взять его номер, наименование и кол-во этой единицы в конкретном узле.
Спасибо!
К сообщению приложен файл: 1243718.xls (83.5 Kb)


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеДень добрый! Помогите с кодом если не сложно.
Нужно найти тот узел куда входит искомая единица на листе "Состав узлов", взять его номер, наименование и кол-во этой единицы в конкретном узле.
Спасибо!

Автор - ZamoK
Дата добавления - 24.09.2015 в 09:31
SLAVICK Дата: Четверг, 24.09.2015, 10:35 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Можно сводной - но нужны доп. столбцы на 2-м листе. :D

Можно и формулами - но насколько я помню у Вас много данных - будет тормозить.
Можно макросами - но не гибко и неудобно.
К сообщению приложен файл: 1243718.zip (32.3 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеМожно сводной - но нужны доп. столбцы на 2-м листе. :D

Можно и формулами - но насколько я помню у Вас много данных - будет тормозить.
Можно макросами - но не гибко и неудобно.

Автор - SLAVICK
Дата добавления - 24.09.2015 в 10:35
ZamoK Дата: Четверг, 24.09.2015, 11:20 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Ну да как бы
но не гибко и неудобно.
, но вариант достойный, спасибо. Т.к. работать таблица будет не так уж часто, то лучшего в принципе и не нужно. Спасибо!
Можно и формулами - но насколько я помню у Вас много данных - будет тормозить.
формулами сделал - выходит, но очень тормозит это мягко сказано, протягивать - вообще не вариант!


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеНу да как бы
но не гибко и неудобно.
, но вариант достойный, спасибо. Т.к. работать таблица будет не так уж часто, то лучшего в принципе и не нужно. Спасибо!
Можно и формулами - но насколько я помню у Вас много данных - будет тормозить.
формулами сделал - выходит, но очень тормозит это мягко сказано, протягивать - вообще не вариант!

Автор - ZamoK
Дата добавления - 24.09.2015 в 11:20
ZamoK Дата: Четверг, 24.09.2015, 11:27 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
SLAVICK, А выделение цветом должно пропадать при новом отборе? Это нормально?


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеSLAVICK, А выделение цветом должно пропадать при новом отборе? Это нормально?

Автор - ZamoK
Дата добавления - 24.09.2015 в 11:27
SLAVICK Дата: Четверг, 24.09.2015, 11:35 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
А выделение цветом должно пропадать при новом отборе?

Это особенность сводной таблицы - она меня самого бесит >( %)
Попробуйте так - вроде получше будет - выбрал стиль для сводной - можете выбрать свой в параметрах.
К сообщению приложен файл: _1243718.zip (29.4 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
А выделение цветом должно пропадать при новом отборе?

Это особенность сводной таблицы - она меня самого бесит >( %)
Попробуйте так - вроде получше будет - выбрал стиль для сводной - можете выбрать свой в параметрах.

Автор - SLAVICK
Дата добавления - 24.09.2015 в 11:35
ZamoK Дата: Четверг, 24.09.2015, 11:42 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
УПС при выборе крайней нижней позиции в узле данные удваивает!!! Это из-за пустой строки в данных. а её нельзя убирать :(
Может всётаки как-то поколдовать над кодом?


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Четверг, 24.09.2015, 11:55
 
Ответить
СообщениеУПС при выборе крайней нижней позиции в узле данные удваивает!!! Это из-за пустой строки в данных. а её нельзя убирать :(
Может всётаки как-то поколдовать над кодом?

Автор - ZamoK
Дата добавления - 24.09.2015 в 11:42
SLAVICK Дата: Четверг, 24.09.2015, 13:04 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Проще над формулой 2-го листа:
Код
=ЕСЛИ(СЧЁТЗ($A4:$E4)=0;"";ЕСЛИ(A4="";G3;A4))
К сообщению приложен файл: 12437181.zip (32.2 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПроще над формулой 2-го листа:
Код
=ЕСЛИ(СЧЁТЗ($A4:$E4)=0;"";ЕСЛИ(A4="";G3;A4))

Автор - SLAVICK
Дата добавления - 24.09.2015 в 13:04
ZamoK Дата: Четверг, 24.09.2015, 14:12 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
SLAVICK, круто hands причесал :D :D :D


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеSLAVICK, круто hands причесал :D :D :D

Автор - ZamoK
Дата добавления - 24.09.2015 в 14:12
Roman777 Дата: Четверг, 24.09.2015, 15:01 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, Мне было интересно и вот что вышло:
К сообщению приложен файл: 1243718.rar (30.5 Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 24.09.2015, 15:02
 
Ответить
СообщениеZamoK, Мне было интересно и вот что вышло:

Автор - Roman777
Дата добавления - 24.09.2015 в 15:01
ZamoK Дата: Четверг, 24.09.2015, 16:09 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Roman777, Реальная таблица состав узлов имеет 22000 строк. Незнаю как работает юзерформ, прикрутил к файлу немного строк и форма стала выдавать ошибку
Код
i_n = Worksheets("Состав узлов").Cells(Rows.Count, 4).End(xlUp).Row
может что-то не то или что не прописал.

А образец работает красиво yes


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеRoman777, Реальная таблица состав узлов имеет 22000 строк. Незнаю как работает юзерформ, прикрутил к файлу немного строк и форма стала выдавать ошибку
Код
i_n = Worksheets("Состав узлов").Cells(Rows.Count, 4).End(xlUp).Row
может что-то не то или что не прописал.

А образец работает красиво yes

Автор - ZamoK
Дата добавления - 24.09.2015 в 16:09
ZamoK Дата: Четверг, 24.09.2015, 16:20 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Попробовал ещё раз увеличить Состав узлов выдал ошибку тут
Код
key = Worksheets("Состав узлов").Cells(i, 4).Value
Всетаки дело в кол-ве строк, уменьшил до 1000 все заработало.
А почему через userform иначе нельзя реализовать, чтоб без потерь в реальную книгу перенести?


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Четверг, 24.09.2015, 16:27
 
Ответить
СообщениеПопробовал ещё раз увеличить Состав узлов выдал ошибку тут
Код
key = Worksheets("Состав узлов").Cells(i, 4).Value
Всетаки дело в кол-ве строк, уменьшил до 1000 все заработало.
А почему через userform иначе нельзя реализовать, чтоб без потерь в реальную книгу перенести?

Автор - ZamoK
Дата добавления - 24.09.2015 в 16:20
Roman777 Дата: Четверг, 24.09.2015, 16:39 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, Врятли дело в количестве, ибо я методом копирования раскопировал лист "Состав узлов" до 30 000+ строк и всё ок работает. Правда там всё-таки кол-во деталей то же осталось.


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 24.09.2015, 16:40
 
Ответить
СообщениеZamoK, Врятли дело в количестве, ибо я методом копирования раскопировал лист "Состав узлов" до 30 000+ строк и всё ок работает. Правда там всё-таки кол-во деталей то же осталось.

Автор - Roman777
Дата добавления - 24.09.2015 в 16:39
Roman777 Дата: Четверг, 24.09.2015, 16:41 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, Юзерформа, мне показалась интересней. Можно и без неё. Но надо вставлять список во 2-ю ячейку, чтобы можно было выбирать только возможные номера, в зависимости от наименования деталей.
А вы переносили форму в другой файл? или в этом файле добавляли строки?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 24.09.2015, 16:46
 
Ответить
СообщениеZamoK, Юзерформа, мне показалась интересней. Можно и без неё. Но надо вставлять список во 2-ю ячейку, чтобы можно было выбирать только возможные номера, в зависимости от наименования деталей.
А вы переносили форму в другой файл? или в этом файле добавляли строки?

Автор - Roman777
Дата добавления - 24.09.2015 в 16:41
Roman777 Дата: Четверг, 24.09.2015, 22:24 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Вот сделал без формы но код аналогичный, так что, скорее всего, ошибка останется...
К сообщению приложен файл: 1243718_.rar (34.0 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеВот сделал без формы но код аналогичный, так что, скорее всего, ошибка останется...

Автор - Roman777
Дата добавления - 24.09.2015 в 22:24
ZamoK Дата: Пятница, 25.09.2015, 07:35 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Roman777,
А вы переносили форму в другой файл?
Да переносил - не работает форма
в этом файле добавляли строки?
Да добавлял 22000 строк - не работает - удалил до 1000 заработала, но оч туго, минуты 1,5 ждал пока список во втором выборе появится.
В принципе меня вариант SLAVICK устраивает полностью, за исключением дополнительных столбцов на листе Состав, они очень утяжелили файл, но в остальном оч красиво.


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Пятница, 25.09.2015, 07:59
 
Ответить
СообщениеRoman777,
А вы переносили форму в другой файл?
Да переносил - не работает форма
в этом файле добавляли строки?
Да добавлял 22000 строк - не работает - удалил до 1000 заработала, но оч туго, минуты 1,5 ждал пока список во втором выборе появится.
В принципе меня вариант SLAVICK устраивает полностью, за исключением дополнительных столбцов на листе Состав, они очень утяжелили файл, но в остальном оч красиво.

Автор - ZamoK
Дата добавления - 25.09.2015 в 07:35
ZamoK Дата: Пятница, 25.09.2015, 08:11 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Вот сделал без формы но код аналогичный, так что, скорее всего, ошибка останется...

Предположения верны !!!
При переносе ошибка тут i_n
Код
i_n = Worksheets("Состав узлов").Cells(Rows.Count, 4).End(xlUp).Row
А при добавлении в твой файл вот тут
Код
key = Worksheets("Состав узлов").Cells(i, 4).Value
Одним словом чётнетак :( может офис (у меня 13)


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Пятница, 25.09.2015, 08:13
 
Ответить
Сообщение
Вот сделал без формы но код аналогичный, так что, скорее всего, ошибка останется...

Предположения верны !!!
При переносе ошибка тут i_n
Код
i_n = Worksheets("Состав узлов").Cells(Rows.Count, 4).End(xlUp).Row
А при добавлении в твой файл вот тут
Код
key = Worksheets("Состав узлов").Cells(i, 4).Value
Одним словом чётнетак :( может офис (у меня 13)

Автор - ZamoK
Дата добавления - 25.09.2015 в 08:11
Roman777 Дата: Пятница, 25.09.2015, 10:18 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, Добрый день! Честно, мне трудно понять с чем могут быть связаны трудности (я сам учусь ещё, поэтому попробовал Вашу задачу реализовать), мб у Вас файлик переизбыт формулами помимо всего, но что скорее всего, то там что-то по-другому, что-то отличается от файлика из сообщения №1 (помимо количества строк) и этого я не учитывал.
Странно
Да добавлял 22000 строк - не работает - удалил до 1000 заработала, но оч туго, минуты 1,5 ждал пока список во втором выборе появится.

Я только что добавил в файлик из сообщения №1 в 3й столбик (колонка "С") на листе "Состав узлов" ещё 20000 номеров рандомных (всех разных) и в колонку "D" присвоил им имя "Вал". При запуске юзерформы и выборе названия Вал, 2-й список заполнялся секунды 2 и отображает все 20000 разных наименований.
Поэтому без Вашего оригинального файлика, мне было бы трудно что-то сказать. Думаю врятли тут дело в офисе.
Ну поскольку у Вас всё-равно уже есть рабочее решение, можно дальше и не развивать (хотя всё же интересно понять причину ошибок, чтобы знать что я не так сделал).


Много чего не знаю!!!!
 
Ответить
СообщениеZamoK, Добрый день! Честно, мне трудно понять с чем могут быть связаны трудности (я сам учусь ещё, поэтому попробовал Вашу задачу реализовать), мб у Вас файлик переизбыт формулами помимо всего, но что скорее всего, то там что-то по-другому, что-то отличается от файлика из сообщения №1 (помимо количества строк) и этого я не учитывал.
Странно
Да добавлял 22000 строк - не работает - удалил до 1000 заработала, но оч туго, минуты 1,5 ждал пока список во втором выборе появится.

Я только что добавил в файлик из сообщения №1 в 3й столбик (колонка "С") на листе "Состав узлов" ещё 20000 номеров рандомных (всех разных) и в колонку "D" присвоил им имя "Вал". При запуске юзерформы и выборе названия Вал, 2-й список заполнялся секунды 2 и отображает все 20000 разных наименований.
Поэтому без Вашего оригинального файлика, мне было бы трудно что-то сказать. Думаю врятли тут дело в офисе.
Ну поскольку у Вас всё-равно уже есть рабочее решение, можно дальше и не развивать (хотя всё же интересно понять причину ошибок, чтобы знать что я не так сделал).

Автор - Roman777
Дата добавления - 25.09.2015 в 10:18
Roman777 Дата: Пятница, 25.09.2015, 11:46 | Сообщение № 18
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, В общем, ошибки нашёл). Первое, когда вы пытались в свой файл перенести мои макросы, это у Вас включена опция Option Explicit. Она требует явного определения переменных, вот он Вам и кричал на переменную i_n её надо вначале определить и аналогично ещё несколько переменных в коде макроса usf().
это для последнего файла, без юзерформы, но сразу скажу, что поскольку там список задётся через Validation, то макрос надо подправлять, убирать добавление этого списка сразу в ячейку Cells(3,2), поскольку у Вас очень много этих позиций, а я на сколько понял, в список Validation добавить массив можно только строкой (единоразово массивом), по крайней мере добавлять в цикле у меня не вышло. А у строки, я думаю, ограничения на длину и всё количество Ваших номеров, которых более 2000 уникальных, не влезет в переменную.
Поэтому выбор номера изделия можно будет осуществлять только после выбора наименования (а не как я планировал возможность это делать и наоборот, после выбора номера, обновляется список наименований)
Но в Юзерформе, думаю, что такое бы сработало (добавление более 2000 уникальных позиций номеров изделий)
А вторая ошибка,
key = Worksheets("Состав узлов").Cells(i, 4).Value

возникала из-за того, что в реальном файле у Вас используется ВПР на листе "Состав узлов" в столбце 4 и на некоторые позиции, например строка 2552 (вроде) у вас стоит "#Н/Д" потому что ВПР не находит позицию, чтобы избежать ошибок, можно в Макросе поставить проверку, либо в формулу ВПР занесть в проверку ЕСЛИОШИБКА
[vba]
Код
=ЕСЛИОШИБКА(ВПР(RC[-1];Данные!C[-3]:C[-2];2;0);"")
[/vba]
Прикреплю файл с откорректированным кодом (должен работать даже без изменения формул)
А файл с Юзеформой из Сообщения № 9 должен работать, если вы замените формулу ВПР на ЕСЛИОШИБКА(ВПР();"")
К сообщению приложен файл: 5528635.rar (33.1 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеZamoK, В общем, ошибки нашёл). Первое, когда вы пытались в свой файл перенести мои макросы, это у Вас включена опция Option Explicit. Она требует явного определения переменных, вот он Вам и кричал на переменную i_n её надо вначале определить и аналогично ещё несколько переменных в коде макроса usf().
это для последнего файла, без юзерформы, но сразу скажу, что поскольку там список задётся через Validation, то макрос надо подправлять, убирать добавление этого списка сразу в ячейку Cells(3,2), поскольку у Вас очень много этих позиций, а я на сколько понял, в список Validation добавить массив можно только строкой (единоразово массивом), по крайней мере добавлять в цикле у меня не вышло. А у строки, я думаю, ограничения на длину и всё количество Ваших номеров, которых более 2000 уникальных, не влезет в переменную.
Поэтому выбор номера изделия можно будет осуществлять только после выбора наименования (а не как я планировал возможность это делать и наоборот, после выбора номера, обновляется список наименований)
Но в Юзерформе, думаю, что такое бы сработало (добавление более 2000 уникальных позиций номеров изделий)
А вторая ошибка,
key = Worksheets("Состав узлов").Cells(i, 4).Value

возникала из-за того, что в реальном файле у Вас используется ВПР на листе "Состав узлов" в столбце 4 и на некоторые позиции, например строка 2552 (вроде) у вас стоит "#Н/Д" потому что ВПР не находит позицию, чтобы избежать ошибок, можно в Макросе поставить проверку, либо в формулу ВПР занесть в проверку ЕСЛИОШИБКА
[vba]
Код
=ЕСЛИОШИБКА(ВПР(RC[-1];Данные!C[-3]:C[-2];2;0);"")
[/vba]
Прикреплю файл с откорректированным кодом (должен работать даже без изменения формул)
А файл с Юзеформой из Сообщения № 9 должен работать, если вы замените формулу ВПР на ЕСЛИОШИБКА(ВПР();"")

Автор - Roman777
Дата добавления - 25.09.2015 в 11:46
  • Страница 1 из 1
  • 1
Поиск:

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