Показать полную графическую версию : [решено] Помогите написать скрипт для Exel на VB
Всем привет. Офис 2003
Требуется простая (для опытных) задача:
есть в Exel таблица, в которой в каждой строке (столбец только один единственный) данные одним словом.
Требуется написаить макрос на VB, который бы находил одинаковые данные и удалял их (повторяющиеся начиная со 2, 3 и т.д. повторения)
в итоге должен получится столбец с НЕ ПОВТОРЯЮЩИМИСЯ данными в каждой строке. Т.е. в идеале именно УДАЛЯЛ дублирующиеся строки.
+ дополнительно как можно программно сделать удаление всего, что идёт после пробела в строке
+ удалить вначале лишние пробелы если есть
Ну как-то так ))
Заранее признателен.
С меня пиво
Sub DelRowDuble()
Dim a As Range
Dim b As Long
b = Cells(Rows.Count, 1).End(xlUp).Row
For Each a In Range(Cells(1, 1), Cells(b, 1))
a.Value=trim(a) ' убираем лишние пробелы
Do While a <> "" And a = a.Offset(1, 0)
a.Offset(1, 0).EntireRow.Delete
Loop
Next a
' убираем все после первого пробела
Range(Cells(1, 1), Cells(b, 1)). _
Replace What:=" *", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
или
Sub DelRowDuble()
Dim i As Long
Dim b As Long
b = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = b To 2 Step -1
a.Value=trim(a) ' убираем лишние пробелы
If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
If Cells(i, 1).Value <> "" Then Rows(i).Delete
End If
Next i
' убираем все после первого пробела
Range(Cells(1, 1), Cells(b, 1)). _
Replace What:=" *", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.ScreenUpdating = False
End Sub
Использованы решения из этой (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=23397) темы
после пробела в строке
+ удалить вначале лишние пробелы если есть »
может наоборот? Сначала пробелы в начале строки, а затем все, что после пробела?
может наоборот? Сначала пробелы в начале строки, а затем все, что после пробела? »
Да-да, ТАКОЙ вариант в одном лице можно?
Т.е. удалить пробелы вначале, потом всё, что после пробела, а потом повторяющиеся строки удалить и в конце сортирануть столбец по алфавиту и я СЧАСТЛИВ ПОЛНОСТЬЮ :yahoo:
а по этим двум кодам я пробовал - что-то ничего не происходит. Что не так делаю? Где курсор должен быть ? И в начале столбца на первой строке пробовал ставить, и все данные в столбце пробовал выделять - тишина :help:
а по этим двум кодам я пробовал - что-то ничего не происходит. »
Там список должен быть предварительно отсортирован. Ну, и не по первому слову, а по значению ячейки целиком.
Там список должен быть предварительно отсортирован. Ну, и не по первому слову, а по значению ячейки целиком. »
а, т.е. надо сначала отсортировать,а потом? Выделить все данные или на первую ячейку стать и запустить макрос?
[hr]
Все заработало, огромное спасибо. По поводу пробелов в начале и удалению всего после пробела можно ещё? и я в полном восторге буду
Дописал обе программы в сообщении 2
Дописал обе программы в сообщении 2 »
чудеса. Получилось вот что:
в 1 коде убирает пробелы и после пробела, НО не убирает дубликаты
во 2 коде сразу ругается на строку
a.Value = Trim(a) ' убираем лишние пробелы
Вначале сортирую, потом становлюсь на первую ячейку и запускаю
заработало !!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC