Добрый день! Возникла задача - удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца). В файле примера - нужно удалять столбцы с желтыми ячейками (выделение цветом - условно). Возможны пустые ячейки там, где они должны быть заполнены (выделены красным, пример ошибки "ручного" заполнения) - подобные столбцы остаются.
Может, у кого-то есть готовый макрос на удаление столбцов умной таблицы?
Нашел такое:
Код
Sub SelectColumn()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Columns.Count
If WorksheetFunction.CountA(diapaz1.Columns(i).EntireColumn) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Columns(i).EntireColumn
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Columns(i).EntireColumn)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодного пустого столбца!"
Else
diapaz2.Select
End If
End Sub
jeka-irbis, Добрый день, а покажите желаемый результат, раз считаете что вам не понятно ответили.. я понял что нужно удалить столбец но оставить название "шапки"..а видимо нужно все удалить если пусто везде кроме имени шапки?
Mershik, добрый день! Желаемый результат - удаление столбцов, в которых не было данных. Если в каком-то столбце все-таки есть несколько пустых ячеек, но есть хотя бы одна непустая ячейка - такие столбцы должны оставаться.
Sub fff()
Dim c As Long, lcol As Long
Dim coldel As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
lcol = Cells(1, Columns.Count).End(xlToLeft).Column
For c = lcol To 1 Step -1
x = Application.WorksheetFunction.CountA(Columns(c))
If x <= 1 Then Columns(c).Delete
Next c
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Андрей VG, и вам того же - доброго времени суток. Ну если подходить с вашей дотошностью, то в "умной" таблице пустых столбцов не бывает по определению - как минимум, в заголовке "умной" таблицы ячейка будет непустой)
Потому и написал про заголовок в скобках - обязательно нашлись бы те, кто написал бы "как же может быть умная таблица, в которой в столбце ВСЕ ячейки пустые))
Ну, дело не дотошности, а в том, что при беглом чтении, постановка задачи звучит как: удалить столбцы умной таблицы, содержащие только пустые значения, кроме заголовков столбцов. Я с тёзкой на это попались. Осторожный Mershik закинул удочку детализации
jeka-irbis написал: Возникла задача - удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца).
Так все-же, вам нужно удалять целиком столбцы таблицы, где нет данных, или удалять столбцы таблицы, не трогая заголовки, или удалять столбцы целиком? Ежели все же первое, то так
Код
Sub Мяу()
Dim lk As Object, calc&
Application.ScreenUpdating = False
calc = Application.Calculation
Application.Calculation = xlCalculationManual
For Each lk In Range("Таблица1").ListObject.ListColumns
If lk.DataBodyRange.Text = Empty Then
lk.Delete
End If
Next
Application.Calculation = calc
Application.ScreenUpdating = True
End Sub
jeka-irbis написал: Так он в исходном файле не имел данных, был условно выделен желтым - соответственно, должен быть удален. Или вы что-то другое имели ввиду?
Уважаемый Faiber, просто Ваша фраза
Цитата
jeka-irbis написал: удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца)
звучит так: удалить из "умной" таблицы столбцы, все ячейки которых пустые, не удаляя заголовков этих столбцов. Поэтому, многие не сразу поняли, что на самом деле Вам нужно.
Счастливчик, Здравствуйте. А вы ничего не путаете или настолько Счастливы вы что не обращаете внимание кто когда и что написал? Или ва интересно невпопад отвечать всем? Где вы видел в посте #16 чтоб Faiber спрашивал от том что вы написали в своём посте.