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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2015, 15:09   #11
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Вы несколько дополнили условия задачи, сразу вопрос - а если в столбце В есть значения, которых нет в других?
Написал же - как при простой Сортирвоке по возратсанию - сдвиг. Т.е. положим в 1 строке цифра 2000, во 2 - 18900 (не по примеру), а в столбце D в первой строке - ничего, 2 - 18900, 3 - 7000. После сортировки 18900 станет в первую строку, 7000 - во вторую.
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 15:10   #12
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Далее столбец С - разделить по столбцам
Это как сделать?
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 15:31   #13
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Давайте лучше доделаем макрос

Код:
Sub Кардаган()

i = 1

For y = 1 To 69

    If Cells(i, 2).Value = Cells(i, 4).Value Then
        Cells(i, 10).Value = Cells(i, 4).Value
        Cells(i, 11).Value = Cells(i, 5).Value
        Cells(i, 12).Value = Cells(i, 6).Value
        Cells(i, 13).Value = "из " & i & " строки" 
        Else:
        x = 1
          For Z = 1 To 100
            If Cells(i, 2).Value = Cells(x, 4).Value Then
                Cells(i, 10).Value = Cells(x, 4).Value
                Cells(i, 11).Value = Cells(x, 5).Value
                Cells(i, 12).Value = Cells(x, 6).Value
                Cells(i, 13).Value = "из " & x & " строки" 
                End If
                x = x + 1
                
           Next Z
    End If

i = i + 1
Next y

For Each a In Range("J1:J67")
If a = "" Then
a.Select
v = ActiveCell.Row
    Range("J" & v & ":M" & v).Delete Shift:=xlUp
End If
Next



End Sub
27102014 вне форума Ответить с цитированием
Старый 23.07.2015, 15:51   #14
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Давайте лучше доделаем макрос
Куда деваются остальные значения столбца D? Их нужно располагать после тех, что есть в столбце B.
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 15:59   #15
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

пока никуда не деваются, нужен еще цикл перебора всех значений столбца В и добавление значений в новые столбцы
Сами справитесь?
27102014 вне форума Ответить с цитированием
Старый 23.07.2015, 16:09   #16
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
пока никуда не деваются, нужен еще цикл перебора всех значений столбца В и добавление значений в новые столбцы
Сами справитесь?
А зачем перебирать значения столбца B? Вот Ваш макрос отсортировал столбец D по столбцу В. При этом он показал в копии столбца D только те значения, которые ЕСТЬ в столбце В. А остальные значения столбца D надо помещать в эту же копию столбца D ниже этих значений (см. предыдущее предложение этого поста)(естественно вместе со значениями столбцов E и F). Вдогонку вопрос: если мне понадобится по этому же столбцу В сортировать не 3 столбца (D, E, F), а, скажем, 5 (D, E, F, G, H), как мне нужно будет изменить код? Увы мои знания по ВБА очень малы. Сам не справлюсь. Помогите, пожалуйста.

Последний раз редактировалось Кардаган; 23.07.2015 в 16:18.
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 16:24   #17
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

И я тут подумал - не надо сдвига. Все значения столбца D, которых нет в столбце B, идут в копии столбца D после значений, которые есть в столбце В. А если в столбце В есть значения, которых нет в столбце D - то в отображаемой копи вставляется пустая строка напротив такого значения столбца В.
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 16:40   #18
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Вы меня совсем запктали с тем что же Вам в итоге нужно.
Исходный файл похож на выгрузку из какой-то программы - возможно изначально в программе можно задать правильные настройки и выгрузить как хотелось бы это все видеть.

Должно быть так - четкий вопрос - конкретный ответ.
Спрашиваете что-то расплывчато - будьте готовы доработать сами

по коду - нужно добавить в циклы дополнительные столбцы - знакомы со стилем ячеек R1C1?
Cells(i, 10).Value = Cells(x, 4).Value - D и J
Cells(i, 11).Value = Cells(x, 5).Value - Е и К
Cells(i, 12).Value = Cells(x, 6).Value - F и L

по аналогии добавляйте сколько угодно
27102014 вне форума Ответить с цитированием
Старый 23.07.2015, 17:29   #19
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
Вы меня совсем запктали с тем что же Вам в итоге нужно.
Исходный файл похож на выгрузку из какой-то программы - возможно изначально в программе можно задать правильные настройки и выгрузить как хотелось бы это все видеть.

Должно быть так - четкий вопрос - конкретный ответ.
Спрашиваете что-то расплывчато - будьте готовы доработать сами

по коду - нужно добавить в циклы дополнительные столбцы - знакомы со стилем ячеек R1C1?
Cells(i, 10).Value = Cells(x, 4).Value - D и J
Cells(i, 11).Value = Cells(x, 5).Value - Е и К
Cells(i, 12).Value = Cells(x, 6).Value - F и L

по аналогии добавляйте сколько угодно
Моих знаний не достаточно, чтобы добавить в циклы. Приведите пример кода, пожалуйста.
В программе нельзя, так как это сравнение ДВУХ баз.
Кардаган вне форума Ответить с цитированием
Старый 25.07.2015, 07:42   #20
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если я все правильно понял, то можно сделать так:
Код:
Sub qq()
    Dim i As Long, j As Long, k As Integer, m As Long, a(), b(), c()
    Application.ScreenUpdating = False: Cells.Interior.ColorIndex = xlNone
    a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row).Value
    b = Range("D1:F" & Cells(Rows.Count, 4).End(xlUp).Row).Value
    ReDim c(1 To UBound(b, 1) * 2 + 1, 1 To UBound(b, 2)): m = 1
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(b, 1)
            If a(i, 1) = b(j, 1) Then
                For k = 1 To 3
                    c(m, k) = b(j, k): b(j, k) = ""
                Next: Exit For
            End If
        Next
        m = m + 1
    Next
    For i = 1 To UBound(b, 1)
        For k = 1 To 3: c(m + i, k) = b(i, k): Next
    Next
    [D1].Resize(UBound(c, 1), UBound(c, 2)).Value = c
    Intersect([D:F], Rows(UBound(a, 1) + 1 & ":" & UBound(c, 1))).SpecialCells(xlCellTypeBlanks).Delete xlUp
    Intersect([D:F], Rows(UBound(a, 1) + 1 & ":" & Cells(Rows.Count, 4).End(xlUp).Row + 1)).Interior.ColorIndex = 6
End Sub
Если значению в столбце "B" нет соответствующего значения в столбце "D", то строка остается пустой. Это более наглядно, т.к. одинаковые значения будут располагаться на одной строке. Все строки столбцов "D:F", не имеющие искомого значения в столбце "B" будут расположены ниже и окрашены в желтый цвет.
Пример во вложении.
Вложения
Тип файла: rar Сортировка_2.rar (16.7 Кб, 12 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 25.07.2015 в 07:55.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка строк по столбцу на НЕ-текущем листе who Microsoft Office Excel 6 15.09.2014 14:36
Сортировка ListView по выбранному столбцу lena pryadun C++ Builder 2 28.05.2012 17:53
Сортировка строк по столбцу Ilya_L Microsoft Office Excel 2 19.06.2010 06:36
Сортировка массива по столбцу Iv@n Общие вопросы .NET 2 02.03.2010 13:55
Сортировка по столбцу А? не могу разобраться Sirius2w Microsoft Office Excel 10 10.12.2009 13:56