Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 13:36   #11
godkiller07
Пользователь
 
Регистрация: 03.03.2014
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Пробуйте. Работает с активным листом, формирует на другом листе.
Код:
Sub bb()
Dim i&, a As Range, d As Range
Application.ScreenUpdating = False
ActiveSheet.Copy after:=ActiveSheet
[C:C].Insert
Range("A1", Cells(Rows.Count, "A").End(xlUp)).Offset(, 2) = "A"
With Range("D1", Cells(Rows.Count, "D").End(xlUp))
  .Offset(, 2).Value = "C"
  .Resize(, 3).Cut Cells(Rows.Count, "A").End(xlUp).Offset(1)
End With
[A1].Sort [A1], xlAscending, Header:=xlNo
i = 1
Set a = Range("C:C").Find("A")
Set a = Range("C:C").ColumnDifferences(a)
For Each a In a
  i = a.Row
  If i > 1 Then
    If Cells(i, 1) = Cells(i - 1, 1) Then
      Cells(i, 1).Resize(, 3).Cut Cells(i - 1, 4)
      If d Is Nothing Then Set d = Cells(i, 1) Else Set d = Union(d, Cells(i, 1))
    Else
      Cells(i, 1).Resize(, 3).Cut Cells(i, 4)
    End If
  Else
    Cells(i, 1).Resize(, 3).Cut Cells(i, 4)
  End If
Next
Range("C:C,F:F").Delete
d.EntireRow.Delete
Application.ScreenUpdating = True
End Sub
Всё отлично, а можно сделать так что бы было например:
Вложения
Тип файла: zip Книга777.zip (7.8 Кб, 3 просмотров)
godkiller07 вне форума Ответить с цитированием
Старый 03.03.2014, 15:13   #12
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А сразу нельзя было выложить реальный пример, с тремя столбцами, с заголовком?
Больше переделывать не буду!
Код:
Sub bb()
Dim i&, a As Range, d As Range
Application.ScreenUpdating = False
ActiveSheet.Copy after:=ActiveSheet
Range("D:D").ClearContents
Range("A2", Cells(Rows.Count, "A").End(xlUp)).Offset(, 3) = "A"
With Range("E2", Cells(Rows.Count, "E").End(xlUp))
  .Offset(, 3).Value = "C"
  .Resize(, 4).Cut Cells(Rows.Count, "A").End(xlUp).Offset(1)
End With
[A1].Sort [B1], xlAscending, Header:=xlYes
i = 2
Set a = Range("D:D").Find("A")
Set a = Range("D:D").ColumnDifferences(a)
For Each a In a
  i = a.Row
  If i > 1 Then
    If Cells(i, 1) = Cells(i - 1, 1) Then
      Cells(i, 1).Resize(, 3).Cut Cells(i - 1, 5)
      If d Is Nothing Then Set d = Cells(i, 1) Else Set d = Union(d, Cells(i, 1))
    Else
      Cells(i, 1).Resize(, 3).Cut Cells(i, 5)
    End If
  End If
Next
Range("D:D").ClearContents
If Not d Is Nothing Then d.EntireRow.Delete
Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение одинаковых значений в 2 столбцах jaguardark Microsoft Office Excel 22 06.09.2017 14:37
Нахождение одинаковых значений и выделение Liilla Microsoft Office Excel 3 16.11.2011 22:57
Отброс одинаковых значений ZanderBlack1 Microsoft Office Excel 2 02.02.2011 20:13
Нахождение одинаковых значений NoLL Microsoft Office Excel 5 17.11.2010 15:38
Выделение одной строки из двух одинаковых REMove Microsoft Office Excel 2 15.12.2007 16:03