Страницы: 1
RSS
VBA: разбивка с помощью макроса объединенных ячеек
 
Здравствуйте. Стабильно на работе приходится проделывать следующую операцию с экселевской таблицей: после выгрузки в таблице удаляются лишние столбцы, остаются только столбцы с номер и суммой договора. В столбце с суммами, бывают обычные ячейки, с числом, 0 или пустые и объединенные ячейки, в которых так же может быть число, 0 или пустота. И объединенные ячейки постоянно приходится руками разъединять и проставлять туда число, 0 или оставлять их пустыми соответственно. Вопрос в том, можно ли сделать эту операцию с помощью какого-либо макроса? Пример таблицы во вложении.  
Изменено: artem3.6 - 01.07.2019 22:20:35
 
Цитата
можно ли сделать эту операцию с помощью какого-либо макроса?
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
Dim n As Integer
 iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
  For i = 2 To iLastRow
    If Cells(i, 2).MergeCells Then
      n = Cells(i, 2).MergeArea.Count
      Range(Cells(i, 2), Cells(i + n - 1, 2)).UnMerge
      Cells(i, 2).Resize(n) = Cells(i, 2)
    End If
  Next
End Sub
 
Без записи значений:
Код
Sub UnMergeCells()
    Worksheets("Лист1").UsedRange.UnMerge
End Sub
 
Kuzmich, спасибо, очень выручили :)
И ещё вопрос, есть ли возможность немного усовершенствовать макрос и сделать его так, чтобы он работал в конкретном выделенном столбце или, ещё лучше, диапазоне ячеек?
 
Цитата
чтобы он работал в конкретном выделенном столбце или, ещё лучше, диапазоне ячеек?
Так макрос и так работает с конкретным диапазоном ячеек от В2 и до последней ячейки в столбце В.
Cells(i, 2) - цифра 2 указывает на столбец В, если нужен другой столбец, то поменяйте цифру.
Или замените цикл For i = 2 To iLastRow на цикл по выделенному диапазону Selection. Удачи!
Страницы: 1
Наверх