Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос VBA сравнение значений ячеек в Excel / 12 сообщений из 12, страница 1 из 1
21.05.2011, 18:01
    #37272772
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Здравствуйте!
Есть файл Excel с табличкой, значения допустим, в А1 =8, а2 =9,А3=15,А4=25.... А524=8,... А 600 = 15 и т.д.
Подскажите текст макроса, который бы отобрал НЕПОВТОРЯЮЩИЕСЯ значения колонки А и записал бы их в В. Например, В1=8,В2=9 и т.д.
Спасибо!
...
Рейтинг: 0 / 0
21.05.2011, 18:12
    #37272777
basicv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Jimy,

Data -> Filter -> Advanced filter -> Unique records only
...
Рейтинг: 0 / 0
21.05.2011, 18:21
    #37272782
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Спасибо, но нужен именно код, чтобы вставить его в книгу - бухгалтера не будут разбираться с фильтрами...
...
Рейтинг: 0 / 0
21.05.2011, 18:54
    #37272815
basicv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Jimy,

бухгалтеров нужно учить
...
Рейтинг: 0 / 0
21.05.2011, 19:02
    #37272819
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Понятно. Только им (бухгалтерам) за 60 и максимум на что они согласны - это нажать готовую кнопочку в Excel. На большее никак . А поменять бухгалтеров - увы, не в моей компетенции...
p.s. Помогите с кнопочкой
Спасибо.
...
Рейтинг: 0 / 0
21.05.2011, 19:19
    #37272825
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Jimy,

Вариант №1: программно взять уникальные значения из фильтра.
Код: plaintext
1.
2.
Sub Макрос1()
    Range("A1:A600").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
End Sub
Вариант №2: подключиться к таблице Экселя с помощью ADO и получить набор уникальных данных с помощью инструкции SQL SELECT с предикатом DISTINCT.
Справка Microsoft® Jet DISTINCT Исключает записи, которые содержат повторяющиеся значения в выбранных полях. Чтобы запись была включена в результат выполнения запроса, значения в каждом поле, включенном в инструкцию SELECT, должны быть уникальными. Например, в таблице «Сотрудники» есть однофамильцы. Если две записи содержат значение «Иванов» в поле «Фамилия», то следующая инструкция SQL возвратит только одну из них:
SELECT DISTINCT
Фамилия
FROM Сотрудники;

Если опустить предикат DISTINCT, этот запрос возвратит обе записи для фамилии Иванов.

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

Результат выполнения инструкции SQL, содержащей предикат DISTINCT, является необновляемым и не отражает последующие изменения, внесенные другими пользователями.
...
Рейтинг: 0 / 0
21.05.2011, 19:30
    #37272828
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Вот, только что проверил последний пост. Спасибо. Но получается следующее
Было:
А1 = 1
А2=1
А3=1
А4=2
А5=3

Стало:
в1=1
в2=1
в3=2
в4=3
Есть повторяющиеся. Может, что то подправить?
...
Рейтинг: 0 / 0
21.05.2011, 19:33
    #37272829
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Jimy,

Почитайте эту статью до конца.
...
Рейтинг: 0 / 0
21.05.2011, 19:38
    #37272833
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
JimyВот, только что проверил последний пост. Спасибо. Но получается следующее
Было:
А1 = 1
А2=1
А3=1
А4=2
А5=3

Стало:
в1=1
в2=1
в3=2
в4=3
Есть повторяющиеся. Может, что то подправить?
Действительно есть повторы, кроме в1=1 и в2=1?
...
Рейтинг: 0 / 0
21.05.2011, 19:41
    #37272835
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
Всем большое спасибо!!! Вроде получается!
...
Рейтинг: 0 / 0
21.05.2011, 19:43
    #37272838
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
The_PristJimy,

Почитайте эту статью до конца.
Посмотрел сейчас Ваш пример с кодом, может, конечно, я сегодня уже много пива выпил или слишком много строк г**нокода на VBA настрочил, но мне кажется, что решение с помощью SELECT DISTINCT концептуально более правильное.
...
Рейтинг: 0 / 0
21.05.2011, 19:56
    #37272846
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос VBA сравнение значений ячеек в Excel
кладовщик,

SELECT DISTINCT ведь может достать уникальные только одного поля, нет? Или я что-то путаю? Код же в статье позволяет извлечь уникальные из диапазона любой размерности, незвисимо от кол-ва полей. Даже если надо будет извлечь только уникальные, расположенные в двух столбцах. А DISTINCT в таком случае вернет только уникальные по строке.
Так что здесь концепция правильности напрямую зависит от задачи.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос VBA сравнение значений ячеек в Excel / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]