Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Умная таблица - быстро удалить столбцы, не содержащие данных
 
Добрый день!
Возникла задача - удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца).
В файле примера - нужно удалять столбцы с желтыми ячейками (выделение цветом - условно).
Возможны пустые ячейки там, где они должны быть заполнены (выделены красным, пример ошибки "ручного" заполнения) - подобные столбцы остаются.

Может, у кого-то есть готовый макрос на удаление столбцов умной таблицы?

Нашел такое:
Код
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
https://exceltable.com/vba-macros/makros-udaleniya-pustyh-stolbcov
Знаний по VBA недостаточно - замена "А1" на "А2" и "i=1" на "i=2" задачу, естественно не решила...

Если задачу можно быстро решить без VBA - прошу поделиться способом.
 
Хочу вас огорчить. Удалить ячейки из умной таблицы нельзя никак. Хоть с VBA, хоть без. И удалить столбец, оставив от него ячейку, тоже.
 
RAN, где в моем сообщении было про "удаление ячейки из умной таблицы" или "столбца, оставив от него ячейку"?
По-русски вроде написано
Цитата
jeka-irbis написал:
удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца)
 
jeka-irbis, Добрый день, а покажите желаемый результат, раз считаете что вам не понятно ответили.. я понял что нужно удалить столбец но оставить название "шапки"..а видимо нужно все удалить если пусто везде кроме имени шапки?
Изменено: Mershik - 12.09.2020 15:20:04
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, добрый день!
Желаемый результат - удаление столбцов, в которых не было данных. Если в каком-то столбце все-таки есть несколько пустых ячеек, но есть хотя бы одна непустая ячейка - такие столбцы должны оставаться.
Изменено: jeka-irbis - 12.09.2020 15:33:45
 
Доброе время суток
Цитата
jeka-irbis написал:
Желаемый результат - удаление столбцов, в которых не было данных.
Подскажите, пожалуйста, где в файле примере Книга1_после_удаления.xlsx выполнено условие
Цитата
jeka-irbis написал:
кроме, естественно, заголовка столбца
В файле Книга1.xlsx есть столбец PartStatus, а в представленном примере результата - нет.
Изменено: Андрей VG - 12.09.2020 15:40:22
 
jeka-irbis, Если без обращения к умной таблице
Код
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, Вы просто так пишите или есть факт неработающиего макроса???

пы сы у меня все работает для первого файл!
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
jeka-irbis написал:
с вашей дотошностью,
Ну, дело не дотошности, а в том, что при беглом чтении, постановка задачи звучит как: удалить столбцы умной таблицы, содержащие только пустые значения, кроме заголовков столбцов.
Я с тёзкой на это попались. Осторожный Mershik закинул удочку детализации :)
 
Цитата
Андрей VG написал:
В файле Книга1.xlsx есть столбец PartStatus, а в представленном примере результата - нет.
Так он в исходном файле не имел данных, был условно выделен желтым - соответственно, должен быть удален. Или вы что-то другое имели ввиду?
 
jeka-irbis, ???
Цитата
Mershik написал:
Вы просто так пишите или есть факт неработающиего макроса?
Не бойтесь совершенства. Вам его не достичь.
 
Андрей VG написал:
Цитата
постановка задачи звучит как: удалить столбцы умной таблицы, содержащие только пустые значения, кроме заголовков столбцов.
Именно так)

Mershik, прошу прощения, мой косяк был)) Перепроверил еще раз, отработало великолепно!
СПАСИБО!
 
Цитата
jeka-irbis написал:
Возникла задача - удалить из "умной" таблицы столбцы, все ячейки которых пустые (кроме, естественно, заголовка столбца).
Так все-же, вам нужно удалять целиком столбцы таблицы, где нет данных, или удалять столбцы таблицы, не трогая заголовки, или удалять столбцы целиком?  :oops:
Ежели все же первое, то так
Код
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
Изменено: RAN - 12.09.2020 17:46:37
Страницы: 1
Читают тему (гостей: 1)
Наверх