Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Уникальные

Автор baters, 19.04.2011, 22:07:00

« назад - далее »

baters

Добрый вечер.

Извлекаю уникальные из двух вкладок.

Sub Extract_Unique()
    Dim vItem, avArr, li As Long, wsSh As Worksheet
    ReDim avArr(1 To Rows.Count, 1 To 1)
    With New Collection
        On Error Resume Next
        For Each wsSh In Sheets(Array("1 вкладка", "2 вкладка"))
            For Each vItem In wsSh.Range("A1", wsSh.Cells(wsSh.Rows.Count, 1).End(xlUp)).Value
                .Add vItem, CStr(vItem)
                If Err = 0 Then
                    li = li + 1: avArr(li, 1) = vItem
                Else: Err.Clear
                End If
            Next
        Next wsSh
    End With
    If li Then [B1].Resize(li).Value = avArr
End Sub




Подскажите пожалуйста, что нужно изменить в макросе что бы:
1.  ячейки в столбцах "D" (вкладок от куда цепляю уникальные) преобразовались в число.
2. Что нужно изменить в макрорсе, что бы он извлекал из вкладкок уникальные столбцов "D", и подставлял значения этих уникальных из столбцов "С" "H" "F". 
Заранее благодарен.

Alex_ST

#1
Поясните, пожалуйста:
1. Под "вкладки" вы, наверное, имеете в виду "Листы"?
2. Почему, в макросе у вас выбираются значения из столбцов А если вам нужно из D?
3. А в столбцах D обоих листов у вас только цифры? Текста точно нет? Цифры, надеюсь, целые?
4. Как вы себе представляете подстановку значений одновременно из столбцов "С" "H" "F"?
(так, по крайней мере следует из вашего вопроса)
С уважением, Алексей

baters

Добрый день.

Отвечаю по порядку.
1. ага именно лист.
2. хм опечатался ссори.
3. в столбцах Д только цифры, и только целые.
4. в этих столбцах часть данных относящихся к уникальным, и они становятся последовательно в столбцы после уникальных.

Alex_ST

Цитата: baters от 20.04.2011, 19:29:09... в этих столбцах часть данных относящихся к уникальным, и они становятся последовательно в столбцы после уникальных...
"моя твоя не понимай" ;D
Выкладывайте пример. Без него от ваших "разъяснений" всё только ещё больше запуталось.
С уважением, Алексей

baters

http://zalil.ru/30901151

вот примерчик

Alex_ST

Ну, извините, но "я так не играю"...
Неужели нельзя было в примере показать сделанный в ручную пример того, что должен сделать макрос?
А ещё сделать разъяснения, откуда какие данные в результате получены? Да хоть одинаковым цветом ячеек на листах...
Может быть вам ваша структура файла и взаимосвязь данных и понятна, но мне - нет.

Да и файл-пример почему-то на стороннем ресурсе выложили, а не здесь же в посте... А у меня с работы доступ на zalil и практически на все другие файлообменники закрыт.

Так что помочь вам, скорее всего не смогу.
С уважением, Алексей

baters

Все исправил, выделил цветом. Запускается с ИТОГ1 и подтягивает данные по цвету.

[вложение удалено Администратором]

Alex_ST

Вот теперь постепенно начинает проясняться...
Давайте уточним задачу:
1. Взять все коды товаров из синих ячеек в столбцах D на листах "вкл1" и "вкл 2".
2. На листе "итог1" сформировать таблицу из кодов товаров, соответствующих этим кодам названий товаров (зелёные ячейки из столбцов С), ценам (оранжевые ячейки столбцов Н) и единицам измерения (жёлтые ячейки столбцов F).
А теперь вопросы:
1. Коды товаров в столбцах D на листах "вкл1" и "вкл 2" могут повторяться?
— если НЕТ, то при чём здесь выбор уникальных значений?
— если ДА, то какие из названий, цен и единиц измерения следует считать"правильными" и переносить на лист "итог1"?
2. А где же в примере ваш не работающий макрос, который надо запускать с "итог1" и который нужно подправить? :)
С уважением, Алексей

Дмитрий Щербаков(The_Prist)

Baters, а это случаем не продолжение вот этой темы старого форума?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

baters

Цитата: Alex_ST от 21.04.2011, 09:50:38

А теперь вопросы:
1. Коды товаров в столбцах D на листах "вкл1" и "вкл 2" могут повторяться?
— если НЕТ, то при чём здесь выбор уникальных значений?
— если ДА, то какие из названий, цен и единиц измерения следует считать"правильными" и переносить на лист "итог1"?
2. А где же в примере ваш не работающий макрос, который надо запускать с "итог1" и который нужно подправить? :)

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

В примере макроса нет :( он в начале этой темы выложен. Но если нужен могу его в пример вставить.

baters

Цитата: The_Prist от 21.04.2011, 13:22:30
Baters, а это случаем не продолжение вот этой темы старого форума?

Ага, именно оно :)

PS хорошая однако память...

Дмитрий Щербаков(The_Prist)

#11
Цитата: baters от 21.04.2011, 19:51:16
Ага, именно оно :)

PS хорошая однако память...
Между прочим это Вы должны были указать ссылку на ту тему, а не я :-)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Alex_ST

baters,
пока я пишу макрос, скажите, пожалуйста, а вам действительно нужна эта куча имён диапазонов (40 штук!), которые есть в вашем примере?
Вы их в дальнейшем используете в формулах или это "хвосты" и их можно все спокойно убить чтобы не путались под ногами?
С уважением, Алексей

Alex_ST

#13
Ну вот, доделал. Пробуйте.
Не дождался вашего ответа про лишние имена диапазонов, поэтому чистите их сами.
Только не удаляйте имена диапазонов, которые ввёл я для удобства работы:
NAZV , NAZV1 , NAZV2 ,
KOD , KOD1 , KOD2 ,
EDIN , EDIN1 , EDIN2 ,
CENA , CENA1 , CENA2

использование имён позволяет не привязываться жёстко в коде к именам листов и расположению на них ячеек, а это - удобство пользователя.

В примере кроме основного макроса CombinePrice есть ещё и CombinePrice1 - это первый вариант, построенный по тому же принципу, что и окончательный, но в нём используется предварительная передача диапазонов ячеек с листов в массив и последующая обработка массива.
Вообще-то работа с массивами намного быстрее работы с ячейками листа (диапазонами).  Это особенно заметно при очень больших объёмах данных (тысячи строк).
Но при работе с массивами теряется гибкость кода. Там уже так просто перемещать диапазоны исходных данных нельзя.
Выбирайте, что для вас важнее: скорость или удобство.


[вложение удалено Администратором]
С уважением, Алексей

Alex_ST

Вот ещё чуть "полирнул" комментарии
К стати, ещё на всякий случай (вдруг у вас такой нет) добавил кнопочку и макрос для вывода имён диапазонов в активную ячейку листа. Посмотрите, может часть имён лишняя?

[вложение удалено Администратором]
С уважением, Алексей

Яндекс.Метрика Рейтинг@Mail.ru