|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2011, 13:01 | #1 |
Пользователь
Регистрация: 28.08.2009
Сообщений: 34
|
Из вертикальной выборки уникальных, в горизонтальную.
Здравствуйте уважаемые форумчане. Возник вопрос: Как переделать этот макрос чтобы, он выбирал уникальные значения не из столбцов (вертикально), а из строк. Заранее благодарствую.
Option Explicit Sub unq() Dim arr, arr1 Dim Uniq1 As New Collection Dim lr As Long, lc As Integer, c As Integer, i As Integer Application.ScreenUpdating = False arr = ActiveSheet.UsedRange lr = Cells(Rows.Count, 1).End(xlUp).Row lc = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count For c = 1 To lc For i = 1 To UBound(arr) On Error Resume Next Uniq1.Add arr(i, c), arr(i, c) Next ReDim arr1(1 To Uniq1.Count, 1 To 1) For i = 1 To Uniq1.Count arr1(i, 1) = Uniq1(i) Next Range(Cells(lr + 1, c), Cells(lr + UBound(arr1), c)).Value = arr1 Set Uniq1 = Nothing Next Application.ScreenUpdating = True End Sub Пытался переделать: lr = Cells(Rows.Count, 1).End(xlUp).Row lc = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count в lr = Cells(Columns.Count, 1).End(xlRight).Column lc = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count Не помогло. |
01.04.2011, 15:38 | #2 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Так попробуйте (если ничего особо не менять):
Код:
|
01.04.2011, 16:00 | #3 |
Пользователь
Регистрация: 28.08.2009
Сообщений: 34
|
Скорее всего не ошибаетесь потому как этот код вроде он мне и подсказал (могу тоже конечно ошибаться). Хотя может вы и не о том.
Спасибо за помощь. |
01.04.2011, 16:14 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Не, это не я
lr, lc - это не моё. И я обычно Integer не использую. Кстати, здесь на этом прокол: lr As Long, c As Integer, i As Integer ... lr = Cells(Rows.Count, 1).End(xlUp).Row ... For c = 1 To lr ... For i = 1 To Uniq1.Count Но ошибки не будет, ведь: On Error Resume Next P.S. Хотя Uniq1 вроде никогда до предела Integer в варианте Николая не дойдёт... ну ладно, один прокол возможен. А в верхнем коде два, а может и больше.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 01.04.2011 в 16:21. |
01.04.2011, 16:32 | #5 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
сообщение к теме не имеет отношения, извините.
Цитата:
2B OR NOT 2B = FF
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
01.04.2011, 16:41 | #6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Это наверное не обо мне, я меньше года на этом форуме... Цифры в ник пришлось добавить потому, что есть/был? другой Hugo P.S. уже нет, я один остался...
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 01.04.2011 в 16:43. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Для сайта на юкозе горизонтальную алфавитку | cusha | Фриланс | 0 | 25.03.2011 22:13 |
Особенности вертикальной синхронизации | Lotles | Компьютерное железо | 3 | 14.12.2010 17:48 |
Вывести на экран горизонтальную линию из символов | AleksENN | Помощь студентам | 6 | 02.07.2010 13:44 |
Кнопка с вертикальной надписью | Pirit | Компоненты Delphi | 18 | 15.04.2009 01:37 |
Шифр вертикальной перестановки | funny | Общие вопросы C/C++ | 0 | 27.09.2008 18:59 |