Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Глупый
2 / 2 / 2
Регистрация: 25.11.2015
Сообщений: 37
1

Объединить ячейки в колонке В, так же как в колонке А

27.01.2016, 12:52. Просмотров 946. Ответов 5
Метки нет (Все метки)

Добрый день. Столкнулся с проблемой.

Интересует решение, хотя бы с логической стороны (код сам потом настрочу)

Есть Excel файл. Работа происходит с двумя колонками. В колонке А есть как простые строки, так и объединенные. При этом в колонке В все строки разбиты на отдельные.

Собственно сам вопрос:

Как можно осуществить задачу:

Объединить ячейки в колонке В, так же как в колонке А.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 12:52
Ответы с готовыми решениями:

Как найти и отобразить все пустые ячейки в колонке
Здравствуйте, Ребята! Выполняю сейчас лабу по экселю и задача следующая: Нужно найти и...

Как в Excel объединить (join/merge) в одной колонке (C) значения из двух остальных (A,B)?
Приветствую! Может кто поможет?! Имеется неразрешимая проблема: как в Excel объединить...

Копирование до определенной ячейки в колонке
Помогите пожалуйста с макросом для Excel.В колонке есть как пустые ячейки, так и ячейки с разным...

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

Скопировать строки если дублируются ячейки в колонке
Добрий день! помогите с мокросом которий будет копировать с листа380 строки если дублируются...

5
Shersh
Заблокирован
27.01.2016, 13:18 2
Visual Basic
1
2
3
4
5
6
7
8
9
Sub asdf()
Dim r As Long
For r = 1 To ActiveSheet.UsedRange.Rows.Count
  If Cells(r, 1).MergeArea.Rows.Count > 1 Then
    Cells(r, 1).Offset(, 1).Resize(Cells(r, 1).MergeArea.Rows.Count).Merge
    r = r + Cells(r, 1).MergeArea.Rows.Count - 1
  End If
Next r
End Sub
1
Глупый
2 / 2 / 2
Регистрация: 25.11.2015
Сообщений: 37
28.01.2016, 10:01  [ТС] 3
Спасибо, но произошло затирание данных в тех ячейках, которые объединялись, кроме первой. Буду решать созданием промежуточной переменной.

Добавлено через 20 часов 36 минут
Shersh, Все же переоценил свои возможности.

Если не сложно, напишите ссылку с описанием используемого метода, так как мои кривые руки не могут нагуглить.
0
Shersh
Заблокирован
28.01.2016, 10:28 4
Лучший ответ Сообщение было отмечено Глупый как решение

Решение

Цитата Сообщение от Глупый Посмотреть сообщение
произошло затирание данных в тех ячейках, которые объединялись, кроме первой
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub asdf()
Dim r As Long, rn As Range, s As String
For r = 1 To ActiveSheet.UsedRange.Rows.Count
  If Cells(r, 1).MergeArea.Rows.Count > 1 Then
    s = ""
    For Each rn In Cells(r, 2).Resize(Cells(r, 1).MergeArea.Rows.Count)
      s = s & ":" & rn
      rn.ClearContents
    Next
    Cells(r, 2).NumberFormat = "@"
    Cells(r, 2) = Mid$(s, 2)
    Cells(r, 2).Resize(Cells(r, 1).MergeArea.Rows.Count).Merge
    r = r + Cells(r, 1).MergeArea.Rows.Count - 1
  End If
Next r
End Sub
Цитата Сообщение от Глупый Посмотреть сообщение
напишите ссылку с описанием используемого метода
Цитата Сообщение от F1
Merge Method

ShowMerge method as it applies to the Range object.

Creates a merged cell from the specified Range object.

expression.Merge(Across)
expression Required. An expression that returns the Range object.

Across Optional Variant. True to merge cells in each row of the specified range as separate merged cells. The default value is False.

Remarks
The value of a merged range is specified in the cell of the range's upper-left corner.

Example
This example merges the styles from the workbook Template.xls into the active workbook.

ActiveWorkbook.Styles.Merge Workbook:=Workbooks("TEMPLATE.XLS")
1
Глупый
2 / 2 / 2
Регистрация: 25.11.2015
Сообщений: 37
29.01.2016, 15:04  [ТС] 5
Shersh, И о5 я хочу вас побеспокоить... Скрипт работал нормально, единственное я поменял разделитель данных при переносе в одну ячейку с ":" на Chr(10). Пришел очередной файл и скрипт выдал ошибку (во вложении). происходит в этом файле срабатывание этой ошибки начиная со 125 строки при первом объединение. Пробывал менять данные (хотя понятно, что они тут не причем, потому как до этого он такие же ячейки успевает обработать).
Debug ссылается на эту строчку в коде
Visual Basic
1
 rn.ClearContents
На всякий случай приложу обрабатываемый документ и тот код который у меня запускается
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub a()
    Dim r As Long, rn As Range, s As String
For r = 1 To ActiveSheet.UsedRange.Rows.Count
  If Cells(r, 1).MergeArea.Rows.Count > 1 Then
    s = ""
    For Each rn In Cells(r, 2).Resize(Cells(r, 1).MergeArea.Rows.Count)
      s = s & Chr(10) & rn
      rn.ClearContents
    Next
    Cells(r, 2).NumberFormat = "@"
    Cells(r, 2) = Mid$(s, 2)
    Cells(r, 2).Resize(Cells(r, 1).MergeArea.Rows.Count).Merge
    r = r + Cells(r, 1).MergeArea.Rows.Count - 1
  End If
Next r
End Sub
Заранее благодарен, за разъяснения...
0
Миниатюры
Объединить ячейки в колонке В, так же как в колонке А  
Вложения
Тип файла: xlsx файл на обработку.xlsx (16.4 Кб, 3 просмотров)
Глупый
2 / 2 / 2
Регистрация: 25.11.2015
Сообщений: 37
01.02.2016, 07:47  [ТС] 6
Завтра попробую заменить ClearContents на Value = Empty. Отпишусь о результатах

Добавлено через 14 часов 39 минут
Собственно замена строки
vb.net
1
rn.ClearContents
на строку
Visual Basic
1
rn.Value = Empty
Помогло.

Кто нибудь сможет объяснить - почему? Так как на просторах инета нашел только, совет - "Попробуйте, может поможет" к аналогичной ситуации. Хочется не тупо копипастить, а понимать то, что я делаю (пишу).
0
01.02.2016, 07:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2016, 07:47

В колонке текстовой информации, если внутри ячейки есть искомое слово, то рядом вставить символ из перечня
Приветствую всех форумчан!! Прошу спецов уделить немного личного времени и помочь в следующей...

Циклический поиск значения в колонке , if true = вносит изменения в строке найденой ячейки, else добавляет строку со своими значениями
Здравствуйте, имею 2 листа на 1 листе база магазина, на 2 листе прайс поставщика. Нужно из прайса...

Как установить в Excel AutoFilter к колонке с датой
Имее данные с колонкой содержащей дату формат 'dd.mm.yy' Selection.AutoFilter Field:=1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru