Excel. Удаление из строки ячеек с повторяющимися данными.

Программирование на Visual Basic for Applications
CubaLibra
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 27.01.2006 (Пт) 1:40
Откуда: дас Москау

Excel. Удаление из строки ячеек с повторяющимися данными.

Сообщение CubaLibra » 30.01.2006 (Пн) 18:42

Есть строка с заполненными ячейками. Из них некоторые одинаковы.

Надо, построчно, удалять ячейки с повторяющимеся данными, оставляя по одной уникальной на строку. В итоге, в строке не должно остаться ячеек с одинаковыми данными.

Благодарю за ответ.
атас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.01.2006 (Пн) 18:56

Гы гы гы...
Щас будет изврат :)

Если первая строка таблицы данных - это B4:G4, то:
Выделяем I4:N4 (рядом, слева, строку того же размера), не снимая выделения пишем в строке формул:
=ЕСЛИ(СЧЁТЕСЛИ($B4:$G4;B4:G4)=1;B4:G4;"")

Написав, нажимаем Ctrl+Shift+Enter...

Растягиваем вниз.

Гы гы...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CubaLibra
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 27.01.2006 (Пт) 1:40
Откуда: дас Москау

Сообщение CubaLibra » 31.01.2006 (Вт) 2:13

GSerg, отлично работает, спасибо, но при этом удаляет ВСЕ дублирующиеся, а я хотел оставить из них по одной тоже ))

Я проиллюстрирую:

Были ячейки с данными: val1 | val2 | val3 | val4 | val4 | val5 | val5
Должны остаться: val1 | val2 | val3 | val4 | val5

Благодарю.
атас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.01.2006 (Вт) 12:00

А мона изменить порядок следования данных в строке?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CubaLibra
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 27.01.2006 (Пт) 1:40
Откуда: дас Москау

Сообщение CubaLibra » 31.01.2006 (Вт) 12:36

Да, это не принципиально.
Главное - нельзя менять местами символы внутри ячейки, а менять местами ячейки целиком в пределах строки можно.
атас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.01.2006 (Вт) 13:02

Код: Выделить всё
Sub foo(ByVal where As Excel.Range)
  Dim r As Excel.Range, i As Long, j As Long, t As Long, f As Boolean
 
  t = where.Columns.Count
 
  For Each r In where.Rows
    r.Sort Key1:=r.Cells(1), Header:=xlNo, Orientation:=xlLeftToRight
   
    For i = 2 To t
      j = i - 1
      Do While r.Cells(i).Value = r.Cells(j).Value
        i = i + 1
        f = True
      Loop
     
      For j = j + 1 To i - 1
        r.Cells(j).ClearContents
      Next
      If f Then i = i - 1: f = False
    Next
  Next
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CubaLibra
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 27.01.2006 (Пт) 1:40
Откуда: дас Москау

Сообщение CubaLibra » 01.02.2006 (Ср) 9:29

GSerg, благодарю за быстрый ответ, проблема решена Вашим кодом.
атас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList