Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
23.04.2024, 16:22:21

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Удалить одинаковые ячейки в строке
Страниц: [1]   Вниз
Печать
Автор Тема: Удалить одинаковые ячейки в строке  (Прочитано 3658 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fortunatocat
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« : 01.05.2017, 14:32:58 »

Всем привет! Проблема такая: Имеется таблица с повторяющимися значениями в каждой строке, нужно чтобы дубликат удалился. Руками это фильтровать нереально, некоторые таблицы огромные.

Строка такого вида: Вася Петя Катя Саша Ира Петя Толя Марина . Т.е получается первого Петю нужно оставить а второго удалить автоматом. образец похожего файла прикладываю.

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

Заранее всем спасибо за помощь, сильно не пинайте, я только формулы Ексель постигать начал.

p.s Если кому помочь с парсингом ключевых слов из поисковиков нужно или семантическое ядро составить - обращайтесь! Помогу за спасибо - вы мне а я вам!
« Последнее редактирование: 01.05.2017, 14:35:25 от fortunatocat » Записан
Udik
Пользователь
**

Репутация: +6/-0
Офлайн Офлайн

Сообщений: 69


Просмотр профиля E-mail
« Ответ #1 : 01.05.2017, 15:21:51 »

Так можно
Код: (vb)

Option Explicit


Public Sub clnCell()
Dim i As Long, j&, rowLast&, clnLast&
Dim oDict As Object

With ActiveSheet
rowLast = .Cells(Rows.Count, 1).End(xlUp).Row
clnLast = 14
Set oDict = CreateObject("Scripting.Dictionary")

For i = 1 To rowLast
    For j = 1 To clnLast
        If .Cells(i, j).Value <> "" Then
            If Not oDict.exists(.Cells(i, j).Value) Then
                oDict.Add .Cells(i, j).Value, 1
            Else: .Cells(i, j).Value = ""
            End If
        End If
    Next j
    oDict.RemoveAll
Next i
End With
End Sub

Записан
kuklp
Старожил
****

Репутация: +32/-0
Офлайн Офлайн

Сообщений: 438

4190413
Просмотр профиля E-mail
« Ответ #2 : 01.05.2017, 19:10:32 »

Код: (vb)
Public Sub www()
    Dim i&, j&
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        For j = 7 To 14
            If Not IsError(Application.Match(Cells(i, j).Value, _
            Range(Cells(i, 1), Cells(i, 5)).Value, 0)) Then Cells(i, j) = ""
        Next
    Next
End Sub

Или удалить:
Код: (vb)
Public Sub www()
    Dim i&, j&
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        For j = 7 To 14
            If Not IsError(Application.Match(Cells(i, j).Value, _
            Range(Cells(i, 1), Cells(i, 5)).Value, 0)) Then Cells(i, j) = Empty
        Next
        Range(Cells(i, 7), Cells(i, 15)).SpecialCells(4).Delete xlToLeft
    Next
End Sub
« Последнее редактирование: 01.05.2017, 19:19:39 от kuklp » Записан

kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
fortunatocat
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« Ответ #3 : 02.05.2017, 04:04:33 »

Благодарю! Все работает отлично!
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru