Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2015, 14:42   #1
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию Как программно отфильтровать диапазон ячеек?

Есть диапазон ячеек (в файле обозначен красным цветом).
Мне надо получить из него массив, состоящий из уникальных значений 6+7 столбцов.
Я имею понимание, как это сделать через filter...этот весь диапазон перевести в одномерный массив, отфильтровать и обратно вернуть.
Ну это как-то не технологично, что-ли )
Вложения
Тип файла: xlsx Книга1.xlsx (19.3 Кб, 14 просмотров)
TimeStopper вне форума Ответить с цитированием
Старый 19.10.2015, 14:47   #2
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

А в гугла спрашивали?
LMGFY
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 19.10.2015, 14:50   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Мне надо получить из него массив, состоящий из уникальных значений 6+7 столбцов.
массив одномерный или двумерный?
зачем этот массив нужен?
массив нужен в памяти (для обработки макросом), или на листе? если на листе - то где и в каком виде?
EducatedFool вне форума Ответить с цитированием
Старый 19.10.2015, 15:00   #4
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

AleksandrH, у гугла спрашивал, но про фильтрацию...про уникальные значения не спрашивал )) спасибо! щас попробую доработать третий способ, надеюсь справлюсь )
EducatedFool, на листе он мне не нужен, в двухмерном виде нужен, я с ним еще дополнительно работать буду, а потом уже на лист помещу
TimeStopper вне форума Ответить с цитированием
Старый 19.10.2015, 20:24   #5
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Применил я "нагугленный" способ, и он мне из всего диапазона ячеек вывел уникальные значения, которые расположил в столбик. Это не то, что мне нужно...как прийти к тому что мне нужно, у меня что-то не получилось.
Попробую объяснить более грамотно, что я хочу ))
1. Наверно мне нужен не массив, мне нужен такой же диапазон ячеек, пускай он расположится на том же листе, рядом с начальным диапазоном.
2. Рассматриваемым элементом диапазона - является строка. Итоговый диапазон должен состоять только из уникальных строк.
3. Уникальность строк оценивается только по значениям в столбцах 6 и 7 одновременно.

Не знаю очень понятно или нет.
По факту этот массив это координаты стержней: x1,y1,z1 и x2,y2,z2. Некоторые стержни находятся друг над другом. В таких случаях меня интересует только один из этих стержней, остальные надо удалить.
TimeStopper вне форума Ответить с цитированием
Старый 19.10.2015, 20:44   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

прочитал п.1, понимаю, что "грамотно" не получается
Цитата:
он расположится на том же листе, рядом с начальным диапазоном
понятие рядом в данном случае совершенно не определенное
рядом - это отспупив сколько ячеек?
рядом это отспупив
- вправо
- влево
- вверх
- вниз?
а если исходный и диапазон результат соприкоснуться уголками - это рядом? Пусть бросит в меня камень, кто докажет что это не рядом.

дальше просто не стал читать, чтобы не сеять панику дурными вопросами.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.10.2015, 20:53   #7
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Спасибо уже за то, что вы мне ответили!
Это не принципиально, но давайте отступим в право один столбец, и с той же строки что начинается начальный диапазон начнем итоговый.
Почему не принципиально, потому что я потом этот диапазон все равно передербаню, мне просто вот этот процесс получения уникальных строчек не поддается, остальное вроде могу как-нибудь написать )
TimeStopper вне форума Ответить с цитированием
Старый 20.10.2015, 01:42   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

этот
Код:
Sub Unique67()
  Dim d, rg As Range, r As Long
  Set d = CreateObject("scripting.dictionary"):  rg = Cells(5, 1):  d.Add Cells(5, 6) & Cells(5, 7), 1
  For r = 6 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not d.exists(Cells(r, 6) & Cells(r, 7)) Then  d.Add Cells(r, 6) & Cells(r, 7), 1: Set rg = Union(rg, Cells(r, 1))
  Next
  For r = 1 To 11
    rg.Offset(0, r - 1).Copy Cells(5, r + 12)
  Next
End Sub
в модуль листа и выполните любым удобным способом.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 20.10.2015 в 11:13.
IgorGO вне форума Ответить с цитированием
Старый 20.10.2015, 12:42   #9
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

большое спасибо!
TimeStopper вне форума Ответить с цитированием
Старый 20.10.2015, 12:53   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

пожалуйста, а то, что я здесь:
Код:
  Set d = CreateObject("scripting.dictionary"):  rg = Cells(5, 1):  d.Add Cells(5, 6) & Cells(5, 7), 1
ошибку сделал - ничего?

так будет правильно:
Код:
Sub Unique67()
  Dim d, rg As Range, r As Long
  Set d = CreateObject("scripting.dictionary"):  Set rg = Cells(5, 1):  d.Add Cells(5, 6) & Cells(5, 7), 1
  For r = 6 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not d.exists(Cells(r, 6) & Cells(r, 7)) Then d.Add Cells(r, 6) & Cells(r, 7), 1: Set rg = Union(rg, Cells(r, 1))
  Next
  rg.Resize(, 11).Copy Cells(5, 13)
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить в Примечание диапазон скопированных ячеек? Оксана33 Microsoft Office Excel 16 21.06.2015 19:01
Как получить диапазон ячеек отвечающих условию Arassir Microsoft Office Excel 2 09.10.2011 16:32
Как объявить диапазон ячеек при известных границах motorway Microsoft Office Excel 9 29.11.2009 03:08
Бейсик. Как передать в формулу диапазон ячеек? Наталья Ивановна Помощь студентам 2 02.06.2009 23:36
отфильтровать диапазон значений RaMoNeZz БД в Delphi 8 18.02.2009 20:25