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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.12.2007, 13:03   #1
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию Ячейки Ai Bi (лист1) разгруппировать в Ai (лист2)

Друзья, помогите начинающему программисту) Для облегченного понимания цикла я придумал такой пример, подскажите пожалуйста как его реализовать в макросе:

Имеются два столбца в лист1:
A1-An и B1-Bn

Мне нужно разруппировать их в один столбец A лист2 в такой последовательности:

Столбец A1 лист2:

A1(лист1)
B1(лист1)
A2(лист1)
B2(лист1)
A3(лист1)
B3(лист1)
A4(лист1)
B4(лист1)
A5(лист1)
B5(лист1)
.
.
.
An(лист1)
Bn(лист1)


Заранее благодарю за пример!

Последний раз редактировалось Alexander_Gr; 02.12.2007 в 13:05.
Alexander_Gr вне форума
Старый 02.12.2007, 13:36   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Точно не знаю, попробуйте так

Код:
Sub CombineValues()
Dim iLastRow&, i&, iRow&
    iLastRow = Sheets("Лист1").[A65536].End(xlUp).Row
    Sheets("Лист2").Columns(1).Clear
    For i = 1 To iLastRow
        iRow = iRow + 1
        Sheets("Лист2").Cells(iRow, 1) = Sheets("Лист1").Cells(i, 1)
        iRow = iRow + 1
        Sheets("Лист2").Cells(iRow, 1) = Sheets("Лист1").Cells(i, 2)
    Next i
    MsgBox "Done!", , ""
End Sub
Pavel55 вне форума
Старый 02.12.2007, 18:09   #3
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию

Павел все работает, только приходится завадать последнюю ячейку в столбце (A111) можно как то автоматически его определять?

И ещё, можно унифицировать, к примеру условие выполняется если ячейка не пуста? Как такое условие задается?
Alexander_Gr вне форума
Старый 02.12.2007, 18:15   #4
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию

Ещё вопрос Павел, можно сделать так что бы экспортировались данные не в лист2, а например в файл test.txt ?
Alexander_Gr вне форума
Старый 02.12.2007, 19:27   #5
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Очень странно, что вам приходится задавать самому ячейку А111, т.к. в коде есть строка
iLastRow = Sh1.[A65536].End(xlUp).Row

т.е. ищется последняя строка на Лист1. Если это А111, то переменная iLastRow будет иметь значении 111. Пройтиде макрос пошагово с помощью клавиши F8, и посмотрите какое значение у вас принимает эта переменная.

По поводу пропуска пустых ячеек и сохранения информации в текстовый файл, могу предложить такой вариант.

Код:
Sub CombineValues()
Dim iLastRow&, i&, iRow&
Dim Sh1 As Worksheet
Dim NewSh As Worksheet

    Set Sh1 = Sheets("Лист1") 'лист с данными
    iLastRow = Sh1.[A65536].End(xlUp).Row 'последняя строка с данными
    Set NewSh = Workbooks.Add.Worksheets(1) 'создаём новую книгу с листом
    For i = 1 To iLastRow
        If Not IsEmpty(Sh1.Cells(i, 1)) Then
            iRow = iRow + 1
            NewSh.Cells(iRow, 1) = Sh1.Cells(i, 1)
        End If
        If Not IsEmpty(Sh1.Cells(i, 2)) Then
            iRow = iRow + 1
            NewSh.Cells(iRow, 1) = Sh1.Cells(i, 2)
        End If
    Next i
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:="C:\Test.txt", FileFormat:=xlUnicodeText
    NewSh.Parent.Close False 'закрываем новый книгу, не сохраняя изменений
    Application.DisplayAlerts = True
    MsgBox "Done!", , ""
End Sub
Pavel55 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39
Ячейки в DBGrid Eofol Компоненты Delphi 1 19.01.2008 13:41