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

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

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

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

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

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

может быть другой вариант
0 2 0 4
0 2 0 4
результат
2
4
Vasiliy80 вне форума Ответить с цитированием
Старый 23.04.2019, 11:39   #12
Vasiliy80
Пользователь
 
Регистрация: 23.04.2019
Сообщений: 20
По умолчанию

в блоке аргументы повторяются
Vasiliy80 вне форума Ответить с цитированием
Старый 23.04.2019, 11:44   #13
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Option Explicit
' DATA In A1:D10
Sub GoBitch()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim rngUnion() As Integer
    Dim n As Integer
    Dim i, j
    n = 0
    For i = 1 To 10
        Set rng1 = Range("A" & i & ":D" & i)
        Set rng2 = Range("A" & i + 1 & ":D" & i + 1)
        If Not IsSame(rng1, rng2) Then
            For j = 1 To 4
                If rng1(1, j) <> 0 Then
                    ReDim Preserve rngUnion(n)
                    rngUnion(n) = rng1(1, j).Value
                    n = n + 1
                End If
            Next j
        End If
        
    Next i
     For n = 0 To UBound(rngUnion)
        Cells(20 + n, "A") = rngUnion(n)
    Next n
End Sub

Private Function IsSame(rng1 As Range, rng2 As Range)
    Dim ary1() As Variant
    Dim ary2() As Variant
    Dim st1 As String, st2 As String
    ary1 = Application.Transpose(Application.Transpose(rng1))
    st1 = Join(ary1, ",")
    ary2 = Application.Transpose(Application.Transpose(rng2))
    st2 = Join(ary2, ",")
    IsSame = st1 = st2
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.04.2019, 11:54   #14
Vasiliy80
Пользователь
 
Регистрация: 23.04.2019
Сообщений: 20
По умолчанию

Спасибо огромное, все работает!!!
Vasiliy80 вне форума Ответить с цитированием
Старый 23.04.2019, 11:55   #15
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от Vasiliy80 Посмотреть сообщение
Несколько дней бьюсь, не могу решить проблему
Потому что Вы не сформулировали четко проблему.
Вот в сообщении 1 удаляются ВСЕ подряд идущие строки "1 2 3 4", "1 2 0 0", "1 0 0 4", вроде все понятно.
Но в сообщении 7 удаляется только строка, совпадающая с предыдущей, и из 4 одинаковых строк остаются две.
Как нужно на самом деле?

Цитата:
Сообщение от Vasiliy80 Посмотреть сообщение
Спасибо огромное, все работает!!!
90% вероятность, что нет.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 23.04.2019 в 11:57.
Казанский вне форума Ответить с цитированием
Старый 23.04.2019, 12:01   #16
Vasiliy80
Пользователь
 
Регистрация: 23.04.2019
Сообщений: 20
По умолчанию

Все работает, и работает правильно!
Vasiliy80 вне форума Ответить с цитированием
Старый 23.04.2019, 12:10   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Потому что Вы не сформулировали четко проблему.
Вот в сообщении 1 удаляются ВСЕ подряд идущие строки "1 2 3 4", "1 2 0 0", "1 0 0 4", вроде все понятно.
Но в сообщении 7 удаляется только строка, совпадающая с предыдущей, и из 4 одинаковых строк остаются две.
Как нужно на самом деле?
я не знаю, зачем это нужно TC, но я понял, что ему нужно.
удаляется блок. блок это строчка, повторенная ровно столько раз, сколько в ней значащих чисел/цифр (не нулей).

поэтому
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
это один блок.
и он превращается в
1
2
3
4

а, например,
1 0 0 4
1 0 0 4
1 0 0 4
1 0 0 4
это два блока по две строки, которые превращаются в
1
4
1
4


Цитата:
Сообщение от Vasiliy80 Посмотреть сообщение
Все работает, и работает правильно!
Ну, главное, что Вас это устраивает!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2019, 12:14   #18
Vasiliy80
Пользователь
 
Регистрация: 23.04.2019
Сообщений: 20
По умолчанию

хотя, я ошибся
действительно, если вместе встречается такой вариант к примеру
1 2 0 0
1 2 0 0
1 2 0 0
1 2 0 0
то выводится результат
1
2
3
4
а должно быть
1
2
1
2
Vasiliy80 вне форума Ответить с цитированием
Старый 23.04.2019, 12:18   #19
Vasiliy80
Пользователь
 
Регистрация: 23.04.2019
Сообщений: 20
По умолчанию

просто при проверке мне изначально не встретился такой вариант
Vasiliy80 вне форума Ответить с цитированием
Старый 24.04.2019, 11:09   #20
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию

Так формулами подойдет?

Хотя проблему с двумя одинаковыми блоками подряд не решает
Вложения
Тип файла: xlsx Книга1.xlsx (10.7 Кб, 9 просмотров)
iNataliya вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пронумеровать колонку значений с повторами Milgrom Microsoft Office Excel 3 14.12.2012 21:36
Система массового обслуживания с параллельными каналами обслуживания с повторами ETQW Помощь студентам 0 25.04.2012 19:22
Определение табличного значения имея изначально 2 исходных значения? Михаил К. Общие вопросы Delphi 2 18.06.2011 21:32
Вывод значения time_t и значения uid_t и gid_t papos Помощь студентам 0 23.02.2011 21:49
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 LeX2009 БД в Delphi 14 21.05.2010 16:49