Страницы: 1
RSS
Сортировка уникальных данных в выбранном диапазоне, Как отсортировать данные в столбике "А" при этом привязать к ним данные из столбика "D"
 
Доброго времени суток. Прошу Вашей помощи начинающему. Имею скромные познания VBA. Но имеющиеся знания не позволяют решить следующую проблему: необходимо произвести сортировку данных при этом вместе с перемещением числа в столбце "А" должны перемещаться и данные из столбца "D". Файл во вложении. Первый раз здесь. Поэтому прошу прощения за свою косолапость.
 
Подскажите хотя бы как выделить диапазон А3:D30 по условию: проверяем ячейки в столбике "А" находим первую ячейку содержащую цифры (А2) проверяем дальше пока не найдем пустую ячейку А31 выделяем диапазон А3:D30.
 
Цитата
mamalot написал:
находим первую ячейку содержащую цифры (А2)
Может А3? ))
Вариант: циклом перебрать ячейки - как наткнулись на пустую, номер последней заполненной строки будет на единицу меньше счётчика цикла. Только выделять зачем? Достаточно узнать. :)
 
Скрытый текст
Изменено: Sanja - 26.02.2017 18:16:26
Согласие есть продукт при полном непротивлении сторон
 
Огромное спасибо Sanja!
Честно - слёзы на глазах.
Я бы до такого ни в жизни не дошёл.


Протестирую завтра на рабочем файле - отпишусь.

Ещё раз ОГРОМНОЕ СПАСИБО !!!
 
Цитата
mamalot написал: слёзы на глазах.
:D ну так-то зачем  :cry:
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Вы осторожнее в следующий раз: вот довели человека до слёз.
 
:D. Ок, буду осторожен. Без словаря попробую
Согласие есть продукт при полном непротивлении сторон
 
Кстати немножко описания кода можно? Надо же учиться!
 
Цитата
mamalot написал: немножко описания кода
:cry: 1:1. Страшный сон программера
Изменено: Sanja - 26.02.2017 20:08:14
Согласие есть продукт при полном непротивлении сторон
 
Почитайте теорию про использование в VBA циклов, массивов, словарей. Про конструкцию With...End With. Наверняка многие вопросы сами отпадут. Да и на будущее полезнее
Согласие есть продукт при полном непротивлении сторон
 
Спасибо Sanja.
 
К сожалению в рабочем файле код работает немного не правильно:
- после сортировки в формулы подтягивается не правильный номер ячейки по всем строкам (битая формула)
- и я не совсем корректно привёл пример: пустых строк бывает несколько (пустая строка)

хотя в Вашем примере всё работает правильно. Разобраться не смог. Похоже не корректно определяются пустые строки.
Помогите пожалуйста.  
 
Попробовал удалить пустые строки где их по две.
Объединенный текст вставляется правильно а с формулами беда осталась.
 
Код
Переделал код для одного диапазона - всё равно с формулами беда.
Sub Макрос2()
'
' Макрос2 Макрос
''
    Dim range1 As Range, range2 As Range
Dim i As Integer
Dim clBlanks As Range
Dim eCell As Range
Dim dicUniq
Dim keyRange As Range
Dim stRange As Range
Dim arrBlanks
Dim S
Dim It
    Cells(16, 12).Select
    Set range1 = ActiveCell
    i = 16
    Do While Not IsEmpty(Cells(i, 12))
    i = i + 1
    Loop
    Cells(i - 1, 12).Select
    Set range2 = ActiveCell
    
    Cells(16, 15).Select
    Set range3 = ActiveCell
    i = 16
    Do While Not IsEmpty(Cells(i, 12))
    i = i + 1
    Loop
    Cells(i - 1, 12).Select
    Set range4 = ActiveCell    Set keyRange = Range(range1, range2)
    Set stRange = Range(range3, range4)
    
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=keyRange, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange stRange
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    On Error Resume Next
End Sub

Изменено: mamalot - 28.02.2017 13:17:51
 
mamalot, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
 
Извините.
Кстати дошёл почему беда с формулами: в формулах прописано название листа, поэтому получается не корректно.
Если убрать из формул название листа то всё работает правильно.
Как победить ещё не придумал.
?
Цитата
... и опыт сын ошибок трудных...
 
Во втором, приложенном Вами файле все работает.Или я чего-то не понял или Вы файл не тот приложили
Согласие есть продукт при полном непротивлении сторон
 
Строка 31, 32 являются пустыми. После выполнения макроса строка 32 переносится на 39. В рабочем файле лист разделён на разделы двумя пустыми строками. Получается аброкадабра.
Смотрите скрин - пустая строка выше.
Изменено: mamalot - 28.02.2017 15:05:20
Страницы: 1
Наверх