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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 12:59   #1
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию Макрос для объединения ячеек с нулями SOS!!!

Доброго всем времени суток!
Помогите пожалуйста с макросом искал на сайте, но похожего не нашел.

У меня есть в столбце А в первой строке данные а в остальных нули, и соответственно это дело чередуется в самой верхней строке данные потом ниже скажем в 5-ти строках нули и т.д.

Наглядно где-то так:

Текст
0
0
0
0
Текст
0
0
Текст
0
0
0
0

Так вот текст нужно объединить с ячейками там, где нули и перейти к следующему тексту, а выйти из цикла по достижению пустой ячейки.

Заранее благодарен!!!
DJTreeno вне форума Ответить с цитированием
Старый 15.06.2011, 13:07   #2
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Не оно? Заполнение пустых ячеек
vikttur вне форума Ответить с цитированием
Старый 15.06.2011, 13:30   #3
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Должно быть что-то вроде этого, но не могу поменять условие, в этом коде объединяет ячейки с одинаковыми значениями:

Sub Объединение()
Dim RowIndex As Long
Dim StartRow As Long
Dim LastRow As Long
Dim ColumnToMerge As Long

StartRow = 1 ' с какой строки начинать
ColumnToMerge = 1 ' в какой колонке объединять

LastRow = Cells(Rows.Count, ColumnToMerge).End(xlUp).Row

Application.DisplayAlerts = False

For RowIndex = StartRow + 1 To LastRow
With Cells(RowIndex, ColumnToMerge)
If .Value = .Offset(-1, 0).MergeArea.Cells(1).Value Then
Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge
End If
End With
Next RowIndex

Application.DisplayAlerts = True

End Sub
DJTreeno вне форума Ответить с цитированием
Старый 15.06.2011, 13:45   #4
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

см. вложение, пример на колонке А
Вложения
Тип файла: zip MergeZeroesText.zip (7.0 Кб, 26 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 15.06.2011, 13:45   #5
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Дополню для ясности, что в объединенной ячейке должен остаться только текст без добавления нулей.
DJTreeno вне форума Ответить с цитированием
Старый 15.06.2011, 13:46   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub Объединение()
    Dim RowIndex As Long
    Dim StartRow As Long
    Dim LastRow As Long
    Dim ColumnToMerge As Long

    StartRow = 1    ' с какой строки начинать
    ColumnToMerge = 1    ' в какой колонке объединять

    LastRow = Cells(Rows.Count, ColumnToMerge).End(xlUp).Row

    Application.DisplayAlerts = False

    For RowIndex = StartRow + 1 To LastRow
        With Cells(RowIndex, ColumnToMerge)
            If .Value = .Offset(1, 0).MergeArea.Cells(1).Value Or .Value = 0 Then
                Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge
            End If
        End With
    Next RowIndex

    Application.DisplayAlerts = True

End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 15.06.2011, 13:46   #7
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

EugeneS, СПАСИБИЩЕ ОГРОМНОЕ!!! Выручили!!!
DJTreeno вне форума Ответить с цитированием
Старый 15.06.2011, 13:47   #8
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

код, предложенный мною значительно проще и быстрее
EugeneS вне форума Ответить с цитированием
Старый 15.06.2011, 13:49   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Не спорю, я исправил код автора:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 15.06.2011, 13:53   #10
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

EugeneS, у вас очень простой код, а главное работает!!! Спасибо еще раз!!!

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

Sub Добавить_Строку()
'
' Добавление строки
'

'
lRow = Selection.Row
Range("Q" & Trim(Str(lRow))).Select
Selection.EntireRow.Insert
Range("Q" & Trim(Str(lRow - 1))).Select
Selection.Copy
Range("Q" & Trim(Str(lRow))).Select
ActiveSheet.Paste

Range("S" & Trim(Str(lRow - 1))).Select
Selection.Copy
Range("S" & Trim(Str(lRow))).Select
ActiveSheet.Paste

Range("U" & Trim(Str(lRow - 1))).Select
Selection.Copy
Range("U" & Trim(Str(lRow))).Select
ActiveSheet.Paste

Range("X" & Trim(Str(lRow - 1))).Select
Selection.Copy
Range("X" & Trim(Str(lRow))).Select
ActiveSheet.Paste

Application.CutCopyMode = False

End Sub
DJTreeno вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для объединения ячеек Excel wadzik Microsoft Office Excel 12 24.10.2017 21:32
Макрос для раскраски ячеек pautina13 Microsoft Office Excel 2 09.06.2011 11:39
Макрос для редактирования текста ячеек T_i_m_o_n Microsoft Office Excel 2 23.02.2011 22:53
Макрос для объединения одинаковых ячеек Internal2 Microsoft Office Excel 2 05.11.2009 14:00
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08