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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление дубликатов макросом без помощи фильтра - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Удаление дубликатов макросом без помощи фильтра
SLAVICK Дата: Четверг, 03.12.2015, 11:25 | Сообщение № 21
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Но ПОЧЕМУ у Вас сработал, у RAN не получается

Потому что:
[vba]
Код
For i = 2 To lr
.Item(arr1(i, 1)) = .Item(arr1(i, 1)) + 1
Next
[/vba]
а потом:
[vba]
Код
If .Item(arr1(i, 1)) > 1 Then
[/vba]
Поскольку по факту у Вас в файле разные данные .Item(arr1(i, 1)) = 1 - вот оно и не срабатывает.


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 03.12.2015, 11:26
 
Ответить
Сообщение
Но ПОЧЕМУ у Вас сработал, у RAN не получается

Потому что:
[vba]
Код
For i = 2 To lr
.Item(arr1(i, 1)) = .Item(arr1(i, 1)) + 1
Next
[/vba]
а потом:
[vba]
Код
If .Item(arr1(i, 1)) > 1 Then
[/vba]
Поскольку по факту у Вас в файле разные данные .Item(arr1(i, 1)) = 1 - вот оно и не срабатывает.

Автор - SLAVICK
Дата добавления - 03.12.2015 в 11:25
QwertyBoss Дата: Четверг, 03.12.2015, 11:26 | Сообщение № 22
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вопрос на засыпку. А как добавить дополнительное слово для удаления
If arr1(i, 2).Value Like "Перспективные работы*" Then
и
If arr1(i, 2).Value Like "Текущие работы*" Then


Сообщение отредактировал QwertyBoss - Четверг, 03.12.2015, 11:31
 
Ответить
СообщениеВопрос на засыпку. А как добавить дополнительное слово для удаления
If arr1(i, 2).Value Like "Перспективные работы*" Then
и
If arr1(i, 2).Value Like "Текущие работы*" Then

Автор - QwertyBoss
Дата добавления - 03.12.2015 в 11:26
QwertyBoss Дата: Четверг, 03.12.2015, 11:27 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ок. понял =)
 
Ответить
СообщениеОк. понял =)

Автор - QwertyBoss
Дата добавления - 03.12.2015 в 11:27
QwertyBoss Дата: Четверг, 03.12.2015, 11:37 | Сообщение № 24
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Куда-то вопрос пропал. Пишу снова. Вопрос на засыпку: а как добавить дополнительное слово к условию?
If c.Value Like "Перспективные работы*" Then
и
If c.Value Like "Текущие работы*" Then

Можно конечно поменять названия переменных и каждое сделать по отдельности, но и мак увеличиться в 2 раза, а перебором чё т не могу докумекать.... :'( =(
 
Ответить
СообщениеКуда-то вопрос пропал. Пишу снова. Вопрос на засыпку: а как добавить дополнительное слово к условию?
If c.Value Like "Перспективные работы*" Then
и
If c.Value Like "Текущие работы*" Then

Можно конечно поменять названия переменных и каждое сделать по отдельности, но и мак увеличиться в 2 раза, а перебором чё т не могу докумекать.... :'( =(

Автор - QwertyBoss
Дата добавления - 03.12.2015 в 11:37
SLAVICK Дата: Четверг, 03.12.2015, 12:12 | Сообщение № 25
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Мой код рассчитан только на контроль одной переменной.
Как вариант - добавить еще один макрос, который будет запускать этот с нужными переменными например так
[vba]
Код
Sub main()
For Each i In Array("Перспективные работы*", "Текущие работы*")
Run "d", i, 2
Next
End Sub

Sub d(s$, n%)
Dim c As Range, cF As Range, b As Boolean
For Each c In Range("A1").CurrentRegion.Rows
    If Cells(c.Row, n).Value Like s Then
        If Not b Then b = True Else If cF Is Nothing Then Set cF = c Else Set cF = Union(c, cF)
    End If
Next
cF.EntireRow.Delete
End Sub
[/vba]
ЗЫ еще добавил просмотр только во втором столбце.
К сообщению приложен файл: 8559926-1-1-.xlsm (25.8 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 03.12.2015, 12:12
 
Ответить
СообщениеМой код рассчитан только на контроль одной переменной.
Как вариант - добавить еще один макрос, который будет запускать этот с нужными переменными например так
[vba]
Код
Sub main()
For Each i In Array("Перспективные работы*", "Текущие работы*")
Run "d", i, 2
Next
End Sub

Sub d(s$, n%)
Dim c As Range, cF As Range, b As Boolean
For Each c In Range("A1").CurrentRegion.Rows
    If Cells(c.Row, n).Value Like s Then
        If Not b Then b = True Else If cF Is Nothing Then Set cF = c Else Set cF = Union(c, cF)
    End If
Next
cF.EntireRow.Delete
End Sub
[/vba]
ЗЫ еще добавил просмотр только во втором столбце.

Автор - SLAVICK
Дата добавления - 03.12.2015 в 12:12
QwertyBoss Дата: Четверг, 03.12.2015, 12:18 | Сообщение № 26
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спс. В принципе II столбец и нужен yes Ща потестю...
Так получается что любым макросом можно запустить цепочку макросов?


Сообщение отредактировал QwertyBoss - Четверг, 03.12.2015, 12:21
 
Ответить
СообщениеСпс. В принципе II столбец и нужен yes Ща потестю...
Так получается что любым макросом можно запустить цепочку макросов?

Автор - QwertyBoss
Дата добавления - 03.12.2015 в 12:18
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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