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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2013, 11:57   #1
OlgaK
Новичок
Джуниор
 
Регистрация: 28.08.2013
Сообщений: 7
Вопрос Объединение пустых ячеек по содержанию соседних столбцов

Подскажите пожалуйста!
Необходимо сделать так, чтобы пустые ячейки автоматически объединялись в столбцах A и В по содержимому в столбцах C и D при условии, что в столбцах C и D могут добавляться ячейки и под конец работы с таблицей была возможность добавить «Строку итогов»
Работаю в Excel 2013 года с «Умной таблицей» (в которой нет возможности объединить ячейки, да и при большом количестве страниц в ручную делать очень долго). Если есть возможность так работать в обычной таблице, то тоже приветствуется.
В прикрепленном файле образец Лист 1 «Задача», Лист 2 «Как должно быть».
Заранее спасибо!
OlgaK вне форума Ответить с цитированием
Старый 28.08.2013, 12:02   #2
OlgaK
Новичок
Джуниор
 
Регистрация: 28.08.2013
Сообщений: 7
По умолчанию

Прикрепленный файл
Вложения
Тип файла: zip Пример.zip (13.8 Кб, 16 просмотров)
OlgaK вне форума Ответить с цитированием
Старый 28.08.2013, 13:00   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Так попробуйте, но сначала преобразуйте умную таблицу в диапазон!:


Код:
Sub OlgaK()
Dim lRow&, i&,  j&, t
Application.ScreenUpdating = False
t = Timer
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To lRow
    If Cells(i, 1) > 0 Then
        For j = i + 1 To lRow
            If Cells(j, 1) > 0 Then
                With Range(Cells(i, 1), Cells(j - 1, 1))
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .WrapText = True
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = True
                End With
                With Range(Cells(i, 2), Cells(j - 1, 2))
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .WrapText = True
                    .Orientation = 0
                    .AddIndent = False
                    .IndentLevel = 0
                    .ShrinkToFit = False
                    .ReadingOrder = xlContext
                    .MergeCells = True
                End With
                Exit For
            End If
        Next j
    i = j - 1
    End If
Next i
MsgBox "Время обработки: " & Timer - t, vbInformation, "Объединение"
Application.ScreenUpdating = True
End Sub
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 28.08.2013, 13:18   #4
OlgaK
Новичок
Джуниор
 
Регистрация: 28.08.2013
Сообщений: 7
По умолчанию

Всплывает окно "Run-time error '1004': нельзя установить свойство MergeCells класса Range"
OlgaK вне форума Ответить с цитированием
Старый 28.08.2013, 13:40   #5
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от OlgaK Посмотреть сообщение
Всплывает окно "Run-time error '1004': нельзя установить свойство MergeCells класса Range"

Цитата:
Так попробуйте, но сначала преобразуйте умную таблицу в диапазон!:
смотрите рисунок
Изображения
Тип файла: jpg OlgaK.jpg (125.2 Кб, 128 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 28.08.2013, 13:57   #6
OlgaK
Новичок
Джуниор
 
Регистрация: 28.08.2013
Сообщений: 7
По умолчанию

Спасибо!
Работает. Еще проблема в том, что в столбцах С и D тоже могут быть пустые ячейки. Их нужно будет либо объединять, либо удалять. Это можно сделать одним махом?
Вложения
Тип файла: zip Пример (2).zip (13.7 Кб, 6 просмотров)
OlgaK вне форума Ответить с цитированием
Старый 28.08.2013, 14:36   #7
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

ячейки оформлены таблицей
Код:
Sub WE130828()
Dim OBJ As ListObject
Dim NTAB As String
Dim NTEXT As String
For Each OBJ In Excel.Worksheets(1).ListObjects
NTAB = OBJ.Name
NTEXT = "" & OBJ.Range.Cells(1, 1)
Debug.Print NTAB, NTEXT
If NTEXT = "Номер п/п" Then
  Excel.Worksheets(1).ListObjects(NTAB).Unlist
  Exit For
End If
Next OBJ
OlgaK
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 28.08.2013, 14:38   #8
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от OlgaK Посмотреть сообщение
Спасибо!
Работает. Еще проблема в том, что в столбцах С и D тоже могут быть пустые ячейки. Их нужно будет либо объединять, либо удалять. Это можно сделать одним махом?
у Вас уже есть работающий макрос, немного поразберайтесь как он работает и допишите в него то что Вам нужно
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 28.08.2013, 15:10   #9
OlgaK
Новичок
Джуниор
 
Регистрация: 28.08.2013
Сообщений: 7
По умолчанию

Если бы я в них еще разбиралась. Я только умею их вставлять.
Но все равно спасибо!
OlgaK вне форума Ответить с цитированием
Старый 28.08.2013, 15:48   #10
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от OlgaK Посмотреть сообщение
Если бы я в них еще разбиралась. Я только умею их вставлять.
Но все равно спасибо!
напишите что именно нужно сделать на примере. Допустим ячейка С6 и D6 пустые, что нужно сделать?
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Минёр на Java под Android. Алгоритм открытия соседних ячеек. MeTeOpA Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 1 10.07.2013 04:23
Удаление пустых столбцов в таблице umka777_89 Microsoft Office Word 6 31.05.2013 07:01
Объединение соседних элементов Kcux JavaScript, Ajax 0 17.05.2013 15:01
Запрет пустых столбцов в DataSet JeyKip C# (си шарп) 4 18.04.2011 09:43
Удаление содержимого соседних ячеек после ввода данных. KOSTIK1 Microsoft Office Excel 3 29.12.2009 16:53