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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 10:47   #1
Дмитррр
Новичок
Джуниор
 
Регистрация: 16.09.2009
Сообщений: 2
По умолчанию Автоматически скрывать и отображать столбцы в Екселе.

Возможно ли сделать такое?
У меня в большой таблице есть длинный ряд цифр (номер ряда известен).
Но из сотни находящихся там цифр около 80 являются нулями.
Можно ли добиться, что бы ексель скрывал столбики с нулями, и отображал если вместо нуля в них появляется цифра (по некой формуле). Можно сделать так, что бы значения были только 0 и 1, например. Если 0, то ексель должен скрывать, если 1, то отображать (ширину или автоподбором или заданной мной шириной).
Дмитррр вне форума Ответить с цитированием
Старый 16.09.2009, 11:15   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пусть, например, требуется контролировать значения в 1-й строке. И, если значение = 0, то этот столбец скрыть. Если нет, то отобразить этот столбец с автоподбором ширины. В 1-й строке могут содержаться как константы, так и формулы. Единственное условие, что на рабочем листе должна присутствовать хотя бы одна формула.
Для этого, в модуль нужного листа вставьте код:
Код:
Private Sub Worksheet_Calculate()
    Dim i As Long: Application.ScreenUpdating = False
    For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
        If Cells(1, i) = 0 Then
            Columns(i).Hidden = True
        Else
            Columns(i).Hidden = False: Columns(i).AutoFit
        End If
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.09.2009, 12:09   #3
Дмитррр
Новичок
Джуниор
 
Регистрация: 16.09.2009
Сообщений: 2
По умолчанию

Спасибо) Буду осваивать макросы))
Моё предположение верно, что без макросов это не возможно сделать?

Код:
Private Sub Worksheet_Calculate()
    Dim i As Long: Application.ScreenUpdating = False
    For i = 10 To 100(1, Columns.Count).End(xlToLeft).Column
        If Cells(5, i) = 0 Then
            Columns(i).Hidden = True
        Else
            Columns(i).Hidden = False: Columns(i).AutoFit
        End If
    Next
End Sub
Я правильно переделал для работы с пятой стракой с столбцами от 10 до 100? Просто я ещё в ВБА не работал, не считая ВБ в школе.
Дмитррр вне форума Ответить с цитированием
Старый 16.09.2009, 12:22   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Моё предположение верно, что без макросов это не возможно сделать?
Никакая формула не сможет скрыть столбец (строку).
Цитата:
Я правильно переделал для работы с пятой стракой с столбцами от 10 до 100?
Почти правильно.
Если требуется контролировать с 10 по 100 столбец, то цикл нужно организовать так:
Код:
For i = 10 To 100
Если же использовать
Код:
For i = 10 To Cells(5, Columns.Count).End(xlToLeft).Column
то будут проверяться столбцы 5-й строки с 10 до последнего заполненного столбца этой строки. Так рациональнее. Единственное условие, что в строке 5 в столбцах с 10 до последнего есть хотя бы одно значение.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрывать id компьютера FieryLADY Свободное общение 4 16.05.2009 08:44
скрывать или отображать столбцы с "флажка" Иванов_ДМ Microsoft Office Excel 3 02.03.2009 13:22
Как в 2003 Екселе переименовать столбцы? ЕленаС Microsoft Office Excel 2 10.02.2009 19:09