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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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