Сортировка Xls столбика при экспорте

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 10 сен 2010.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Добрый день.
    Помогите отсортировать 3 экселевских столбика при экспорте данных из лотуса в эксель

    Вот некоторый мой код:

    Код (Text):
    Dim xlApp As Variant
    Dim xlsheet As Variant
    Dim xlwb As Variant
    Dim xlrange As Variant
    Set xlApp = CreateObject("Excel.Application")
    On Error Goto handleXLError
    xlApp.Visible = False
    Set xlwb=xlApp.Workbooks.Add
    Set xlsheet =xlwb.Worksheets(1)
    ....
    Там наверно надо что-то типа
    xlSheet.Columns("C:C").Sort

    но это не правильно...
    Также нужно чтобы все остальные столбики поменялись в соответствии с этой сортировкой
    Ну и самая сложная проблема, насколько я понимаю, Нужно чтобы было 3 сортированных столбика
     
  2. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    А как насчет старого доброго "раскурить и допилить" записанный экселем макрос?
    Сходу получилось что-то типа:
    Код (Text):
    Sub Макрос1()
    Columns("A:C").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1") _
    , Order2:=xlAscending, Key3:=Range("C1"), Order3:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
    xlSortNormal
    End Sub
    Не?
     
  3. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    xlApp.Rows("n:k").Select
    'n и k - номера строк
    xlApp.Selection.Sort xlApp.Range("C2"),1, , , , , , 0, 1, False, 1, , 0, ,
    C2-начальная ячейка, ну например, если первой строкой идет шапка
     
  4. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    alik86 , susinmn , макросами я пробовал... ну так и не понял как это внедрить в лотус..
    У меня 28 столбиков.
    1) В первую очередь должен быть отсортирован 11-ый столбик
    2) Во вторую очередь 1 -ый столбик в зависимости от 11 стобика
    3) В третью очередь 5-ый столбик в зависимости от всех предыдущих.....

    Первая строка - шапка...
     
  5. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    В экселе запускаем запись макроса, жмем Данные -> Сортировка... указываем что и как сортировать. Изучаем, что получилось.
    А в лотус полученный код практически без допилок внедряется путём:
    Set xl=CreateObject("Excel.Application")
    Set xlWbk=xl.Workbooks.Add
    ...а дальше вместо всякого рода Columns("A:C").Select в экселе пишем xlWbk.ActiveSheet.Columns("A:C").Select в лотусе.
    Как-то так.
     
  6. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Ему нужно сделать сортировку, аналогичную View, при условии, что нумерация сортированных стобцов, по которым нужна сортировка, идет не слева-направа, как во View, а так как он захочет 11, 1, 5, ...)
    wowa так же?
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    susinmn, да , именно так


    Добавлено: Вот для теста хочу хотябы отсортировать колонку "E"
    Что это мне надо:
    xlWbk.ActiveSheet.Columns("1:28").Select
    Буден оно так работать или нужно "А:АС(например)"
    Далее?

    xlApp.Selection.Sort xlApp.Range("E2"),1, , , , , , 0, 1, False, 1, , 0, ,

    я прав?
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Так в чём проблема-то? Экспортируем данные в ексель, а он уж сам отсортирует, как ему укажут. alik86 уже всё разжевал, как сделать.
     
  9. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Так:
    __________.gif
    или это я уже чего-то не догоняю? (пятница :))
    P.S. Как вставлять в ответы рисунки в натуральную величину?
     
  10. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Этот файл должен быть уже отсортирован... Этот файл будут сразу импортировать для разного рода отчетов... И я не хочу допускать, что кто-то забудет сделать сортировку,.. да и зачем пользователям разного уровня гемор... Сделал экспорт, сделал затем импорт... и все.. Чем меньше действий пользователю, тем лучше.
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    1. Экспортируете.
    2. Сортируете (кодом, как указал alik86).
    3. Сохраняете.
    Усё
     
  12. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Так программно сортируйте (картинка - это то что Вы проставите во время того как будете забивать макрос для раскурки).
    Точно я чего-то не понимаю... :)
     
  13. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    так, что ли, надо?
    xlApp.Selection.Sort xlApp.Range("K2"),1, xlApp.Range("A2"),1 , xlApp.Range("E2"),1 , 0, 1, False, 1, , 0, ,
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    у мя есть классы "накрывающие" кусочек АПИ хехеля, кот. выдает CSV файлы, в zip (каждый файл - лист)
    и есть сортировка, но не причёсывал зависимости и т.п. потому выложить, пока, не могу
    как собирусь...
    работает значительно быстрее хехеля
     
  15. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    lmike
    может, тогда сразу в Кодебейз, а сюда ссылку? Было бы полезно :)
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">офф по КБ</div></div><div class="sp-body"><div class="sp-content"> и, кстати, надо ли тебе дать права модератора в Кодебейз-Лотус форуме? Виталий вроде на КБ не давал модерство... Будешь успевать проглядывать?
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    OKEN
    к делу ближе - посмотрю
     
  17. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Если сортирую один столбик, то все работает правильно:

    Код (Text):
    xlApp.ActiveSheet.Columns("A:AB").Select
    xlApp.Selection.Sort xlApp.Range("K2"),1, , , , , , 0, 1, False, 1, , 0, ,
    Код (Text):
    Range("A1:AB137").Sort Key1:=Range("K2"), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    А вот для трех колонок, никак не могу подобрать параметры для лотуса

    Код (Text):
    Range("A1:AB137").Sort Key1:=Range("K2"), Order1:=xlAscending, Key2:= _
    Range("A2"), Order2:=xlAscending, Key3:=Range("E2"), Order3:=xlAscending _
    , Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
    xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
    DataOption3:=xlSortNormal
     
  18. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Подобрал
    Код (Text):
    xlApp.Selection.Sort xlApp.Range("K2"),1,xlApp.Range("A2"), ,1 ,xlApp.Range("E2"),1 , 0, 1, False, 1, , 0, ,
     
  19. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    wowa
    Я бы вместо Range("A1:AB137") писал Range(Cells(1, 1), Cells(MaxRow, MaxColumn)), где MaxRow — максимальный номер строки (в данном случае 137), MaxColumn — максимальный номер столбца (28).
     
  20. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nvy, этот кусок кода выдала мне запись макроса(или как правильно сказать)...
    я сделал так: Columns("A:AB").Select
     
Загрузка...
Похожие Темы - Сортировка Xls столбика
  1. vera2014
    Ответов:
    0
    Просмотров:
    1.076
  2. Liori
    Ответов:
    2
    Просмотров:
    1.007
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.266
  4. ленарано
    Ответов:
    1
    Просмотров:
    1.105
  5. Creder
    Ответов:
    0
    Просмотров:
    1.349

Поделиться этой страницей