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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 15:46   #1
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию Нужно удалить строки с одинаковыми по модулю значениями

Добрый день. У меня такая проблема - дано было задание на редактирование файла задолжников. В файле имеются строки с одинаковыми значениями, если брать по модулю. Так как файл достаточно объемен - порядка 40к-50к строк - надо написать макрос или скрипт VBA.
Само задание было такое - надо чтобы при запуске макроса или скрипта удалялись одинаковые по модулю строки, которых имеются одинаковые по модулю значения долга, принадлежащие одному задолжнику. По модулю берутся значения долга из столбца J, которые принадлежат задолжнику из столбца E.
Помогите, пожалуйста, люди добрые.
Вложения
Тип файла: zip Долг.zip (6.1 Кб, 14 просмотров)
Demon010 вне форума Ответить с цитированием
Старый 07.06.2011, 16:18   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что-то похожее давно делал, но правда уже не помню, как... Не Вам делал?
По задаче - задолжников вероятно правильнее отбирать по столбцу D?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.06.2011, 16:29   #3
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

Если бы мне помогли - я бы уже вряд ли обращался с одним и тем же вопросом во второй раз)
Да, Вы правы, надо отбирать по столбцу D и смотреть на значения в столбце J
Ибо там идут значения со знаком + и -, соответственн оесли у одного и того же задолжника одинаковое значение со знаком + и - , то эти строки удаляются

Последний раз редактировалось Demon010; 07.06.2011 в 16:34.
Demon010 вне форума Ответить с цитированием
Старый 07.06.2011, 16:37   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вы уверены, что не будет два/три/четыре условно Иванова Ивана Ивановича? А вот нам разок попались, причём даже по одному счёту, но разные люди... Оказались отец и сын, выловили по персональному коду...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.06.2011, 16:43   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Вариант
Код:
Sub doljok()
Dim x, i&, rDel As Range, c&
Application.ScreenUpdating = False
x = Range("A8:M" & Cells(Rows.Count, 4).End(xlUp).Row).Value
For i = UBound(x) To 3 Step -1
    If x(i - 1, 4) = x(i, 4) Then
        If x(i - 1, 10) = -x(i, 10) Then
            If Not rDel Is Nothing Then
                Set rDel = Union(rDel, Range(Cells(i + 6, 1), Cells(i + 7, 1)))
                If rDel.Count > 500 Then
                    c = c + rDel.Count
                    rDel.EntireRow.Delete
                    Set rDel = Nothing
                End If
            Else
                Set rDel = Range(Cells(i + 6, 1), Cells(i + 7, 1))
            End If: i = i - 1
        End If
    End If
Next i
If Not rDel Is Nothing Then
    c = c + rDel.Count
    rDel.EntireRow.Delete
End If
Application.ScreenUpdating = True
MsgBox "Удалено строк: " & c
End Sub

Последний раз редактировалось nilem; 08.06.2011 в 16:40. Причина: Все напутал :) см. последний пост
nilem вне форума Ответить с цитированием
Старый 07.06.2011, 16:47   #6
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

nilem, Спасибо большое за помощь)
Demon010 вне форума Ответить с цитированием
Старый 07.06.2011, 16:47   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Николай, а если данные не сортированы?
Но у меня сегодня что-то не придумывается, я пас... Да и занят по работе...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.06.2011, 16:53   #8
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

А можно без использования 2 листа в книге?
Чтобы обходиться только одним листом где находятся исходные данные?
Demon010 вне форума Ответить с цитированием
Старый 07.06.2011, 16:54   #9
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Николай, а если данные не сортированы?
Игорь, привет!
Ориентировался на пример - там все отсортировано. Ну если что, можно добавить пару строчек.
nilem вне форума Ответить с цитированием
Старый 07.06.2011, 16:55   #10
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Николай, а если данные не сортированы?
Данные изначально приходят сортированные, на всякий случай сами сортируем
Demon010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обїединение ячеек с одинаковыми значениями WORD Сергей846 Microsoft Office Word 9 19.08.2016 22:48
Выборка строк с одинаковыми значениями на разных листах bernanke Microsoft Office Excel 3 26.01.2011 23:29
Нужно удалить все пробелы из написанной строки. ISV-777 Помощь студентам 3 23.12.2010 09:37
Выделение цветом абзацов с одинаковыми числовыми значениями в тексте в Word'e xamillion Microsoft Office Word 16 01.09.2010 08:39