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

Вход

Регистрация

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

 

= Мир MS Excel/Вывод первого не повторяющегося значения в целевую ячейку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод первого не повторяющегося значения в целевую ячейку (Макросы/Sub)
Вывод первого не повторяющегося значения в целевую ячейку
ant6729 Дата: Понедельник, 01.05.2017, 03:09 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 304
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Доброй ночи!
Подскажите, пожалуйста, как вывести первое не повторяющееся значение из колонки 4 в колонку 1?
Пример приложил.
К сообщению приложен файл: 1039826.xlsm(15Kb)
 
Ответить
СообщениеДоброй ночи!
Подскажите, пожалуйста, как вывести первое не повторяющееся значение из колонки 4 в колонку 1?
Пример приложил.

Автор - ant6729
Дата добавления - 01.05.2017 в 03:09
Michael_S Дата: Понедельник, 01.05.2017, 03:29 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 341 ±
Замечаний: 0% ±

Excel2016
Краткость, оно, конечно, сестра таланта... но не в данном случае.
Вопрос непонятен.


ЯД: 41001136675053
WM: R389613894253
 
Ответить
СообщениеКраткость, оно, конечно, сестра таланта... но не в данном случае.
Вопрос непонятен.

Автор - Michael_S
Дата добавления - 01.05.2017 в 03:29
ant6729 Дата: Понедельник, 01.05.2017, 03:32 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 304
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Michael_S,

В A12 должно пойти 16
При следующем запуске в первую пустую ячейку после 16 в данном случае должна пойти цифра 34
И так далее до последнего значения в 4 колонке
 
Ответить
СообщениеMichael_S,

В A12 должно пойти 16
При следующем запуске в первую пустую ячейку после 16 в данном случае должна пойти цифра 34
И так далее до последнего значения в 4 колонке

Автор - ant6729
Дата добавления - 01.05.2017 в 03:32
Michael_S Дата: Понедельник, 01.05.2017, 04:36 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 341 ±
Замечаний: 0% ±

Excel2016
Один запуск - одно значение? или все сразу?

[vba]
Код
Sub ttt()
    Dim Ar(), i&, Dic As Object, R&
    Set Dic = CreateObject("Scripting.Dictionary")
    R = Cells(Rows.Count, 1).End(xlUp).Row
    Ar = Range("A2:A" & R).Value
    For i = 1 To UBound(Ar)
        If Not Dic.exists(Ar(i, 1)) Then
            Dic.Add Key:=Ar(i, 1), Item:=Ar(i, 1)
        End If
    Next
    Ar = Range("D2", Cells(Rows.Count, 4).End(xlUp)).Value
    For i = 1 To UBound(Ar)
        If Not Dic.exists(Ar(i, 1)) Then
            Dic.Add Key:=Ar(i, 1), Item:=Ar(i, 1)
            Cells(R + 1, 1).Value = Ar(i, 1): R = R + 1
'            Exit For ' если эту строчку убрать - выведет все сразу; а так - один пуск, одно значение.
        End If
    Next
[/vba]


ЯД: 41001136675053
WM: R389613894253


Сообщение отредактировал Michael_S - Понедельник, 01.05.2017, 06:21
 
Ответить
СообщениеОдин запуск - одно значение? или все сразу?

[vba]
Код
Sub ttt()
    Dim Ar(), i&, Dic As Object, R&
    Set Dic = CreateObject("Scripting.Dictionary")
    R = Cells(Rows.Count, 1).End(xlUp).Row
    Ar = Range("A2:A" & R).Value
    For i = 1 To UBound(Ar)
        If Not Dic.exists(Ar(i, 1)) Then
            Dic.Add Key:=Ar(i, 1), Item:=Ar(i, 1)
        End If
    Next
    Ar = Range("D2", Cells(Rows.Count, 4).End(xlUp)).Value
    For i = 1 To UBound(Ar)
        If Not Dic.exists(Ar(i, 1)) Then
            Dic.Add Key:=Ar(i, 1), Item:=Ar(i, 1)
            Cells(R + 1, 1).Value = Ar(i, 1): R = R + 1
'            Exit For ' если эту строчку убрать - выведет все сразу; а так - один пуск, одно значение.
        End If
    Next
[/vba]

Автор - Michael_S
Дата добавления - 01.05.2017 в 04:36
Nic70y Дата: Понедельник, 01.05.2017, 07:25 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4045
Репутация: 861 ±
Замечаний: 0% ±

Excel 2013
вдруг тоже правильно
[vba]
Код
    Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
    For Each c In Range("D3:D" & Cells(Rows.Count, 4).End(xlUp).Row)
    If c <> c.Offset(-1, 0) + 1 Then
    Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1) = c
    End If
    Next
[/vba]


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)
 
Ответить
Сообщениевдруг тоже правильно
[vba]
Код
    Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
    For Each c In Range("D3:D" & Cells(Rows.Count, 4).End(xlUp).Row)
    If c <> c.Offset(-1, 0) + 1 Then
    Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1) = c
    End If
    Next
[/vba]

Автор - Nic70y
Дата добавления - 01.05.2017 в 07:25
ant6729 Дата: Понедельник, 01.05.2017, 08:43 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 304
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Michael_S, спасибо! Именно так!
А где можно про Key и про exists почитать ...? Ничего не нагуглил(..

Nic70y, немного не так)
Если убрать первую строчку... то похоже
 
Ответить
СообщениеMichael_S, спасибо! Именно так!
А где можно про Key и про exists почитать ...? Ничего не нагуглил(..

Nic70y, немного не так)
Если убрать первую строчку... то похоже

Автор - ant6729
Дата добавления - 01.05.2017 в 08:43
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод первого не повторяющегося значения в целевую ячейку (Макросы/Sub)
Страница 1 из 11
Поиск:

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